「mainForm」と「addRslt」という名前の 2 つのフォームがあります。アイデアは、ユーザーが mainForm のボタンをクリックすると、addRslt フォームが Show() になり、ユーザーが TreeView に入力するというものです。ユーザーがこのaddRsltフォームを閉じたい場合、プログラムは代わりにフォームをHide() ( e.Cancel = true;を使用) するため、後でユーザーがこれを再度開くと、TreeView にさらに項目を追加できます。
私のmainFormには、このaddRsltフォームを表示するためのボタンがあり、このボタンのクリックコード内にも、addRsltフォームのTreeViewのコンテンツを検出してmainFormのTreeViewにコピーするFormClosingデリゲートがあります。
問題は、重複したノードをチェックし、それらを mainForm の TreeView に追加しないことです。これは正しく行われていますが、プログラムが既存のノードを追加していないことをユーザーに知らせるメッセージ ボックスもあります。それは今まで大丈夫です..しかし、問題は私がこれを行うたびに、このメッセージボックスが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;
};
}