深度复制树视图节点

Kan*_*Net 6 c#

我正在尝试将树视图节点复制到treenodecollection以进行其他处理.当我执行treeview.nodes.clear()下一行时,我的treenodecollection变为null.您能告诉我如何将树视图节点复制到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.
}
Run Code Online (Sandbox Code Playgroud)

Str*_*nye 4

TreeNode 对象是可克隆的,所有子树都是完整的。这就是为什么您可以使用包含根节点及其子树的列表。

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

}
Run Code Online (Sandbox Code Playgroud)