将所有treeView父级和子级复制到另一个treeView c#WinForms

我试图使用以下代码将树视图(完全)的整个树(完全所有节点)复制到另一个树视图:

        TreeNodeCollection myTreeNodeCollection = treeView1.Nodes;

        TreeNode[] myTreeNodeArray = new TreeNode[treeView1.Nodes.Count];

        treeView1.Nodes.CopyTo(myTreeNodeArray, 0);

        treeView2.Nodes.AddRange(myTreeNodeArray);

但这不允许我这样做,它要求删除源treeview中的节点或使用它克隆!我怎样才能做到这一点?我不希望我的源treeview在这个过程中丢失任何东西.

**更新**
好吧,我发现了一个复杂的代码(对我来说!!),但我该如何使用它?

    public static T DeepTreeCopy<T>(T obj)
    {
        object result = null;
        using (var ms = new MemoryStream())
        {
            var formatter = new BinaryFormatter();
            formatter.Serialize(ms, obj);
            ms.Position = 0;
            result = (T)formatter.Deserialize(ms); ms.Close();
        }
        return (T)result;
    } 
最佳答案
尝试这个

public void Copy(TreeView treeview1, TreeView treeview2)
{
    TreeNode newTn;
    foreach (TreeNode tn in treeview1.Nodes)
    {
        newTn = new TreeNode(tn.Text, tn.Value);
        CopyChilds(newTn, tn);
        treeview2.Nodes.Add(newTn);
    }
}

public void CopyChilds(TreeNode parent, TreeNode willCopied)
{
    TreeNode newTn;
    foreach (TreeNode tn in willCopied.ChildNodes)
    {
        newTn = new TreeNode(tn.Text, tn.Value);
        parent.ChildNodes.Add(newTn);
    }
} 

致以我的问候

转载注明原文:将所有treeView父级和子级复制到另一个treeView c#WinForms - 代码日志