У меня есть две формы с именами 'mainForm' и 'addRslt'. Идея состоит в том, что когда пользователи нажимают кнопку в mainForm, форма addRslt будет отображать Show (), а затем пользователь будет заполнять TreeView. Теперь, когда пользователь ХОЧЕТ ЗАКРЫТЬ эту форму addRslt, программа вместо этого будет Скрыть () форму (используя e.Cancel = true; ), так что позже, если пользователь снова откроет это он / она может добавить больше вещей в TreeView.
В моей mainForm у меня есть кнопка для отображения этой формы addRslt, а также внутри кода щелчка этой кнопки есть мой делегат FormClosing, который обнаружит и скопирует содержимое TreeView в форме addRslt в TreeView в mainForm.
Теперь проблема в том, что я хочу проверять дубликаты узлов и не добавлять их в TreeView в mainForm. Это сделано правильно, но у меня также есть окно сообщения, которое сообщает пользователю, что программа не добавила существующие узлы! это нормально до сих пор .. НО проблема с каждым разом, когда я это делаю, это сообщение появляется N + 1 раз! Я имею в виду, если я делаю это в первый раз, это окно сообщения появляется 2 раза и т. Д ...
Вот мой код! Извините за длинную историю!
private void menuFileAddTestResults_Click(object sender, EventArgs e)
{
addRslt.Show();
addRslt.FormClosing += delegate
{
foreach (TreeNode node in addRslt.treeViewSelectedFiles.Nodes)
{
TreeNode newNode = new TreeNode();
newNode.Text = node.Text;
newNode.Name = node.Name;
newNode.Tag = node.Tag;
if (!treeViewTestFiles.Nodes.ContainsKey(node.Name))
{
treeViewTestFiles.Nodes.Add(newNode);
}
else
{
countExist++;
}
}
if (countExist > 0)
{
MessageBox.Show(countExist.ToString() + " Test files are already exist in the list!");
}
countExist = 0;
};
}