仅删除TreeNodeCollection的第一个节点(Winforms)

时间:2016-02-12 07:59:02

标签: c# .net winforms treeview treenode

我有一个treeview,它是从xmal文件中提取的节点集合。让他们如下:

-Rootnode
     -dir
     -choose
     -obj
     -nodecollections
         -Node1
           -node11
           -node12
               -node121
               -node122
        -Node2
           -node21
               -node211
        -...

我正在做的是创建treenode Node1Node2等节点集合(忽略treeview中的先前节点,只对最后一个孩子感兴趣)使用

TreeNodeCollection compare1 = treeView1.Nodes[0].LastNode.Nodes;

这意味着我现在拥有来自最后一个孩子nodecollections的所有子节点。

接下来我正在检查其中一个孩子,例如:Node2我将其所有子节点保存在新的Treenode

TreeNode action_compare1 = treeView1.Nodes[0].LastNode.Nodes[indx_tree1];

其中indx_tree1是一个整数,我知道选择了哪个节点,然后我将保存节点。

我的目标是在保存所选节点(已完成)后删除所选节点的第一个节点,然后将它们保存在新节点中。例如,假设Node1保存在名为First_node的TreeNode中。然后我将从Node结构中删除Node1并将所有子节点保存在一个新节点中(我不会在Treeview中显示),在这种情况下,我将以下保存的节点作为新节点First_node

-node11
-node12
    -node121
    -node122

但我不知道怎么办?

更新

好吧也许答案很清楚,但我不明白。然后假设我有他的节点:

-Node1
    -node11
    -node12
        -node121
        -node122

现在我想在新节点中提取所有子节点。我该怎么办?

1 个答案:

答案 0 :(得分:0)

根据我们在评论中的讨论,很明显,您需要对孩子的节点集合进行“深层复制”。

您可以通过调用给定节点的Clone()方法来完成此操作。

Read about it here

这是 - 简而言之 - 你可以如何使用它:

TreeNode n=MyTreeView.Nodes[0];
var Node_and_SubNodes_of_given_Node = n.Clone();