2011-07-05 152 views
3

当我试图将节点从一个树视图复制到另一个树视图时,出现一个奇怪的错误:“无法在多个位置添加或插入项目'node1',必须先将其删除从其当前位置或克隆它 参数名称:节点“ 搜索了一段时间后,我找不到任何解决方案。我在VB.NET尝试这样做,有同样的错误 代码示例:将节点添加到树视图的问题

TreeNode node1 = new TreeNode("node1"); 
node1.Name = "node1"; 
treeView1.Nodes.Add(node1); 
TreeNode nd = treeView1.Nodes[0]; 
treeView2.Nodes.Add(nd); 

是否有这方面的任何解决方案?


谢谢大家!这现在起作用了!

+0

你试图在同一水平将节点添加到收藏你又指在同一个节点,使一个新的树节点实例因此错误后两次添加相同的节点 – Devjosh

+0

您提供的代码不会产生任何错误。 –

回答

3

是,使用深层副本

TreeNode nd = (TreeNode)treeView1.Nodes[0].Clone(); 

更改您的代码此

TreeNode node1 = new TreeNode("node1"); 
node1.Name = "node1"; 
treeView1.Nodes.Add(node1); 
TreeNode nd = (TreeNode)treeView1.Nodes[0].Clone(); // clone the object 
treeView2.Nodes.Add(nd); 
0

在这里:

TreeNode nd = treeView1.Nodes[0]; 

你分配点NODE1到第二参考。

当您稍后将nd添加到另一个TreeView时,您会收到错误,因为node1已经绑定到另一个TreeView。

如果你真的需要这样做,你应该复制/关闭节点,而不是简单地引用它,因为你现在正在做。

0

您正试图在同一节点添加到2个不同的树视图

TreeNode nd = treeView1.Nodes[0]; //make nd reference treeView1.Nodes[0] 
treeView2.Nodes.Add(nd);// add treeView1.Nodes[0] into treeView2 
相关问题