У меня есть две формы с именами «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;
};
}