【问题标题】:Removing only the first node of a TreeNodeCollection (Winforms)仅删除 TreeNodeCollection (Winforms) 的第一个节点
【发布时间】:2016-02-12 07:59:02
【问题描述】:

我有一个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

现在我想在一个新节点中提取它的所有子节点。我该怎么做?

【问题讨论】:

  • 我必须承认我不明白这个想法...可能是XY Problem...“如何做”问题往往会产生误导...请描述你想要什么没有你的实际代码实现,或者请描述一个真正的问题(带有错误消息,代码示例......)
  • @Shnugo 请看修改后的最后一段
  • “保存”是什么意思? Nodes 集合将显示您放在那里的任何内容……每个 Node 都有自己的 Nodes 集合。树视图需要一个第一个节点。因此,您可以实例化一个新节点并用您要显示的节点填充它的 Nodes 集合...
  • 如果您不想显示任何内容,只需在您的情况下使用 Node1 的 Nodes 集合即可……如果没有,我仍然不明白您的问题……
  • 您的更新:您想按原样使用给定节点(在本例中:只使用它们),还是使用它们的副本(深度克隆)?

标签: c# .net winforms treeview treenode


【解决方案1】:

根据我们在 cmets 中的讨论,很明显,您需要一个子节点集合的“深拷贝”。

您可以通过调用给定节点的Clone() 方法来做到这一点。

Read about it here

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

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

【讨论】:

  • 但是这个命令只会选择Node[0]而不是它的所有孩子。例如在上面的示例中,如果我们将其应用于Node1,那么将仅选择node11 及其子项。但我也需要node12
  • @SaberJalilzadeh,你试过这个吗?根据文档Clone() 将创建给定节点及其所有子节点的深层副本。您可能会尝试查询父节点...
  • 我如你所愿;)
  • @SaberJalilzadeh 非常感谢 :-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-06
  • 2020-07-19
相关资源
最近更新 更多