不能在多处添加或插入项“xxx”。必须首先将其从当前位置移除或将其克隆。

代码大概是这样的:

//窗口启动时,当前窗口是主窗口中弹出的子窗口
treeView1.Nodes.Clear();
treeView1.Nodes.AddRange(tns);//第一次弹出窗口正常,关闭窗口后再次弹出则发生异常,tns是主窗口中传入的TreeNode[]数组变量


经过测试,发现tns和treeView1之间是互相关联的,所以除了执行

treeView1.Nodes.Clear();

关闭窗口时还要将treeView1中的Nodes进行Remove

foreach(var item in tns)

{

treeView1.Nodes.Remove(item);

}

 

最终代码:

//窗口启动时,当前窗口是主窗口中弹出的子窗口
TreeNode[] tns=new TreeNode[] { new TreeNode(), new TreeNode() };
treeView1.Nodes.Clear();
treeView1.Nodes.AddRange(tns);//第一次弹出窗口正常,关闭窗口后再次弹出则发生异常,tns是主窗口中传入的TreeNode[]数组变量



//窗口关闭时,添加以下代码Remove各个节点,则再次弹出窗口时不再发生异常
foreach(var item in tns)
{
    treeView1.Nodes.Remove(item);
}

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(C#)