C# 如何将treeview的一个实例的节点添加到同一treeview的另一个实例
如何将节点填充到另一个treeview1的实例newtreeview1中?添加到“newtreeview1”的节点应该在TreeView的第一个实例中可用 比如,;如果treeview1包含C# 如何将treeview的一个实例的节点添加到同一treeview的另一个实例,c#,winforms,treeview,C#,Winforms,Treeview,如何将节点填充到另一个treeview1的实例newtreeview1中?添加到“newtreeview1”的节点应该在TreeView的第一个实例中可用 比如,;如果treeview1包含 |-- Node1 |-- Node2 | -- Node3 |-- Node4 newtreeview1还应具有上述节点。您需要复制这些节点。比如: otherTreeView.Nodes.Add(node.Text); 根据需要,您需要选择
|-- Node1
|-- Node2
| -- Node3
|-- Node4
newtreeview1还应具有上述节点。您需要复制这些节点。比如:
otherTreeView.Nodes.Add(node.Text);
根据需要,您需要选择包含所有要复制的数据(键、文本和/或图像)的。不要直接添加节点,而是添加它们的组成部分。您可以尝试下面链接中给出的方法并序列化树内容。然后基于序列化的内容构建一个新的treeview。我知道这是一个冗长的方法,但它保证将所有层次结构数据正确地添加到第二个treeview中
您可以通过克隆每个节点来实现这一点 像这样
private void CopyNodes(TreeView srcTree, TreeView dstTree)
{
var ar = System.Array.CreateInstance(typeof(TreeNode), srcTree.Nodes.Count);
treeView1.Nodes.CopyTo(ar, 0);
foreach (TreeNode item in ar)
{
dstTree.Nodes.Add((TreeNode)item.Clone());
}
}
并调用该函数
CopyNodes(treeView1, treeView2);
您只需复制TreeView1实例并添加其他节点即可。 如下所示
TreeView2 = TreeView1;
TreeView2.Nodes.Add(new TreeNode());
嗯。我尝试过,但它抛出“无法将指定的节点添加到属于其他控件的节点集合。”异常仅当您直接添加节点时才会抛出此异常。重读马丁尼奥的答案。