我正在尝试使用以下代码将树形视图的整个树(所有节点)完全复制到另一个树形视图中:
``` ```
``` ```
TreeNodeCollection myTreeNodeCollection = treeView1.Nodes;
TreeNode[] myTreeNodeArray = new TreeNode[treeView1.Nodes.Count];
treeView1.Nodes.CopyTo(myTreeNodeArray, 0);
treeView2.Nodes.AddRange(myTreeNodeArray);
但是这不允许我这样做,它要求要么在源树视图中删除节点,要么使用它的克隆!我该怎么办?我不想在此过程中丢失我的源树视图中的任何内容。
**更新** 好的,伙计们,我找到了一段复杂的代码(对我来说!!),但我该如何使用它?
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;
}
foreach (TreeNode node in treeView1.Nodes) { treeView1.Nodes.Remove(node); }
这比克隆更快且更干净。 - dmitry