复制所有的TreeView父母和孩子到另一个TreeView的C#的WinForms [英] Copy all treeView parent and children to another treeView c# WinForms
本文介绍了复制所有的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屋!
查看全文