当我尝试将节点从一个树视图复制到另一个树视图时,我收到一个奇怪的错误:“无法在多个位置添加或插入项目'node1'。您必须先将其从当前位置删除或克隆它。 参数名称:node“ 搜索一段时间后,我找不到任何解决方案。我在VB.NET中尝试过这个并且有同样的错误 代码示例:
TreeNode node1 = new TreeNode("node1");
node1.Name = "node1";
treeView1.Nodes.Add(node1);
TreeNode nd = treeView1.Nodes[0];
treeView2.Nodes.Add(nd);
这有什么解决方案吗?
<小时/> 感谢大家!现在可以了!
答案 0 :(得分:5)
是的,请使用深层复制
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);
答案 1 :(得分:2)
同样来自TreeNodeCollection.Add Method (TreeNode)
TreeNode只能分配给一个 TreeView控件一次。添加 树节点到新的树视图控件, 你必须从其他树中删除它 首先查看或克隆它。
答案 2 :(得分:0)
在这里:
TreeNode nd = treeView1.Nodes[0];
您正在将节点node1分配给nd引用。
当您稍后将nd添加到另一个TreeView时,您会收到错误,因为node1已经绑定到另一个TreeView。
如果你真的需要这样做,你应该复制/关闭节点,而不是像现在这样简单地引用它。
答案 3 :(得分:0)
您正尝试将同一节点添加到2个不同的树视图中
TreeNode nd = treeView1.Nodes[0]; //make nd reference treeView1.Nodes[0]
treeView2.Nodes.Add(nd);// add treeView1.Nodes[0] into treeView2