Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将treeview的一个实例的节点添加到同一treeview的另一个实例_C#_Winforms_Treeview - Fatal编程技术网

C# 如何将treeview的一个实例的节点添加到同一treeview的另一个实例

C# 如何将treeview的一个实例的节点添加到同一treeview的另一个实例,c#,winforms,treeview,C#,Winforms,Treeview,如何将节点填充到另一个treeview1的实例newtreeview1中?添加到“newtreeview1”的节点应该在TreeView的第一个实例中可用 比如,;如果treeview1包含 |-- Node1 |-- Node2 | -- Node3 |-- Node4 newtreeview1还应具有上述节点。您需要复制这些节点。比如: otherTreeView.Nodes.Add(node.Text); 根据需要,您需要选择

如何将节点填充到另一个treeview1的实例newtreeview1中?添加到“newtreeview1”的节点应该在TreeView的第一个实例中可用

比如,;如果treeview1包含

   |-- 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());

嗯。我尝试过,但它抛出“无法将指定的节点添加到属于其他控件的节点集合。”异常仅当您直接添加节点时才会抛出此异常。重读马丁尼奥的答案。