深度复制树视图节点

时间:2010-03-31 06:35:47

标签: c#

我正在尝试将树视图节点复制到treenodecollection以进行其他处理。当我在下一行执行treeview.nodes.clear()时,我的treenodecollection变为空。您能否告诉我如何将树视图节点复制到treenodecollection并保留节点的副本,即使在调用实际树视图节点的Clear方法后也是如此?

TreeNodeCollection tnc = null;
private TypeIn()
{
      tnc = treeView1.Nodes;
      treeView1.Nodes.Clear();
      //Now my tnc becomes null, but I want the tnc for future use.
}

2 个答案:

答案 0 :(得分:3)

TreeNode对象是可克隆的,所有子树都是完整的。这就是为什么你可以使用包含子节点的List的子树。

List<TreeNode> tnc = null;
private TypeIn()
{
      tnc  = new List<TreeNode>();
      foreach (TreeNode n in treeView1.Nodes)
      {
          tnc.Add((TreeNode)n.Clone());
      }
      treeView1.Nodes.Clear();

}

答案 1 :(得分:0)

您可以通过序列化treeView并将其反序列化为新对象来实现深层复制。

看看这个: How do you do a deep copy of an object in .NET (C# specifically)?