如何将一个TreeView实例的节点添加到另一个相同TreeView实例中

3
如何将节点填充到另一个treeview1的实例newtreeview1中?添加到“newtreeview1”的节点应该在treeview1的第一个实例中可用。
例如;如果treeview1包含
   |-- Node1
        |-- Node2
           | -- Node3
        |-- Node4

新的treeview1也应该具有以上节点。
4个回答

1

你可以通过克隆每个节点来实现这一点,就像这样

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

0

是的,我尝试过了,但它抛出了“指定的节点无法添加到属于不同控件的节点集合中”的异常。 - Tanya
只有在直接添加节点时才会抛出此异常。请重新阅读马丁诺的答案。 - John Arlen

0

您可以直接复制TreeView1实例并添加其他节点。就像下面所示的那样

TreeView2 = TreeView1;
TreeView2.Nodes.Add(new TreeNode());

0
你可以尝试下面链接中提供的方法,序列化你的树形结构内容。然后基于序列化内容构建一个新的树形视图。我知道这个方法有点冗长,但是它能够保证将所有的层次数据正确地添加到第二个树形视图中。

保存树形视图中的节点


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接