复制所有的TreeView父母和孩子到另一个TreeView的C#的WinForms [英] Copy all treeView parent and children to another treeView c# WinForms

查看:1909
本文介绍了复制所有的TreeView父母和孩子到另一个TreeView的C#的WinForms的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想一个TreeView(完全)的整个树(确切的所有节点)复制到使用此代码另一个树视图:

  TreeNodeCollection myTreeNodeCollection = treeView1.Nodes; 

树节点[] = myTreeNodeArray新的TreeNode [treeView1.Nodes.Count]

treeView1.Nodes.CopyTo(myTreeNodeArray,0);

treeView2.Nodes.AddRange(myTreeNodeArray);



但是,这并不让我这样做,它要求要么删除源树视图中的节点或使用它克隆!我该怎么办呢?我不希望我的源树视图在这个过程中失去任何东西。



**更新**
玉家伙我发现了一个复杂的代码(我!),但我怎么能使用它?



 公共静态牛逼DeepTreeCopy< T>(T OBJ)
{
对象result = NULL;
使用(VAR毫秒=新的MemoryStream())
{
变种格式化=新的BinaryFormatter();
formatter.Serialize(MS,OBJ);
ms.Position = 0;
结果=(T)formatter.Deserialize(MS); ms.Close();
}
回报率(T)的结果;
}


解决方案

试试这个



 公共无效复制(TreeView控件为TreeView1,TreeView控件treeview2)
{
树节点newTn;
的foreach(在treeview1.Nodes TreeNode的TN)
{
newTn =新的TreeNode(tn.Text,tn.Value);
CopyChilds(newTn,TN);
treeview2.Nodes.Add(newTn);
}
}

公共无效CopyChilds(TreeNode的父母,树节点willCopied)
{
树节点newTn;
的foreach(树节点总氮willCopied.ChildNodes)
{
newTn =新的TreeNode(tn.Text,tn.Value);
parent.ChildNodes.Add(newTn);
}
}



我的问候


I am trying to copy the entire tree (exactly all nodes) of a treeview (completely) to another treeview using this code:

        TreeNodeCollection myTreeNodeCollection = treeView1.Nodes;

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

        treeView1.Nodes.CopyTo(myTreeNodeArray, 0);

        treeView2.Nodes.AddRange(myTreeNodeArray);

But this does not allow me to do so, it asks to either delete the nodes in source treeview or use it Clone! How can I do that? I dont want my source treeview to lose anything in this process.

** UPDATE ** Ok guys I found a complicated code (for me!!) but how can I use this?

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

解决方案

try this

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

My regards

这篇关于复制所有的TreeView父母和孩子到另一个TreeView的C#的WinForms的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆