仅删除 TreeNodeCollection (Winforms) 的第一个节点
Removing only the first node of a TreeNodeCollection (Winforms)
我有一个 treeview
,它是从 xmal 文件中提取的节点集合。假设它们是:
-Rootnode
-dir
-choose
-obj
-nodecollections
-Node1
-node11
-node12
-node121
-node122
-Node2
-node21
-node211
-...
我正在做的是创建一个 treenode
Node1
和 Node2
等的节点集合(忽略 treeview
中的先前节点,只对最后 child) 使用
TreeNodeCollection compare1 = treeView1.Nodes[0].LastNode.Nodes;
这意味着我现在拥有上次 child nodecollections
.
的所有 children 个节点
接下来我要检查其中一个 children,例如:Node2
我将其所有 children 节点保存在一个新的 Treenode
TreeNode action_compare1 = treeView1.Nodes[0].LastNode.Nodes[indx_tree1];
其中 indx_tree1
是一个整数,我知道选择了哪个节点,然后我将保存该节点。
我的目标是在保存选定节点(完成)后删除选定节点的第一个节点,然后将它们保存在新节点中。例如,假设 Node1
保存在名称为 First_node
的 TreeNode 中。然后我将从节点结构中删除 Node1
并将其所有 children 保存在一个新节点中(我不会在 Treeview 中显示),在这种情况下我将以下保存的节点作为新节点 First_node
:
-node11
-node12
-node121
-node122
但是不知道怎么办?
更新:
好吧,也许答案很明确,但我不明白。然后假设我有他以下节点:
-Node1
-node11
-node12
-node121
-node122
现在我想将它的所有 children 提取到一个新节点中。我该怎么做?
根据我们在评论中的讨论,很明显,您需要 child 的节点集合中的 "deep copy"。
您可以通过调用给定节点的 Clone()
方法来完成此操作。
简而言之,您可以这样使用它:
TreeNode n=MyTreeView.Nodes[0];
var Node_and_SubNodes_of_given_Node = n.Clone();
我有一个 treeview
,它是从 xmal 文件中提取的节点集合。假设它们是:
-Rootnode
-dir
-choose
-obj
-nodecollections
-Node1
-node11
-node12
-node121
-node122
-Node2
-node21
-node211
-...
我正在做的是创建一个 treenode
Node1
和 Node2
等的节点集合(忽略 treeview
中的先前节点,只对最后 child) 使用
TreeNodeCollection compare1 = treeView1.Nodes[0].LastNode.Nodes;
这意味着我现在拥有上次 child nodecollections
.
接下来我要检查其中一个 children,例如:Node2
我将其所有 children 节点保存在一个新的 Treenode
TreeNode action_compare1 = treeView1.Nodes[0].LastNode.Nodes[indx_tree1];
其中 indx_tree1
是一个整数,我知道选择了哪个节点,然后我将保存该节点。
我的目标是在保存选定节点(完成)后删除选定节点的第一个节点,然后将它们保存在新节点中。例如,假设 Node1
保存在名称为 First_node
的 TreeNode 中。然后我将从节点结构中删除 Node1
并将其所有 children 保存在一个新节点中(我不会在 Treeview 中显示),在这种情况下我将以下保存的节点作为新节点 First_node
:
-node11
-node12
-node121
-node122
但是不知道怎么办?
更新:
好吧,也许答案很明确,但我不明白。然后假设我有他以下节点:
-Node1
-node11
-node12
-node121
-node122
现在我想将它的所有 children 提取到一个新节点中。我该怎么做?
根据我们在评论中的讨论,很明显,您需要 child 的节点集合中的 "deep copy"。
您可以通过调用给定节点的 Clone()
方法来完成此操作。
简而言之,您可以这样使用它:
TreeNode n=MyTreeView.Nodes[0];
var Node_and_SubNodes_of_given_Node = n.Clone();