检查树视图中的根节点和子节点是否相同

本文关键字:子节点 是否 根节点 视图 检查 | 更新日期: 2023-09-27 18:04:31

所以我有一个树视图,正在检查重复项。如果我将一个节点添加到树中,然后尝试添加相同的节点,我的代码不会允许这种情况发生。这就是我想要的。但是现在我需要检查子节点,所以如果根节点相同,但如果根节点的第一个子节点与要添加的子节点不同,我想将这些子节点添加到已经存在的根节点下。我试过:

if(node.Text == root.text && node.FirstNode.Text == root.FirstNode.Text) 
      nodes.Remove(node); 

但这给了我一个 root 的空异常。FirstNode.Text,我不确定为什么它在节点时变得空。FirstNode.Text 显示子节点。

任何建议将不胜感激。

检查树视图中的根节点和子节点是否相同

这意味着您分配给root的任何节点都没有子节点(因此root.FirstNode为空(。 node.FirstNode仍然可以显示它的第一个子节点,如果您分配给该子节点的节点与分配给root的节点不同。

这里重要的是,仅仅因为它们具有相同的文本,并不意味着它们是相同的节点。从提供的代码来看,它们指的是不同的对象(具有不同的子节点集合,或者缺少(

我正在想象如下(不是实际代码(:

|- SomeNode           //Refers to "root" in your code. Note lack of child
|- SomeNode           //Refers to "node". Note same text as "root"
  |- ChildNode        //Would refer to node.FirstChild  

因此,您将获得具有相同文本但布局完全不同的节点。

如果它们是同一 TreeView 的两个节点,则可以使用 TreeNode.FullPath 属性:

获取新节点完整路径后,您将树节点导航到最终路径,如果有另一个同名节点,则删除第一个添加的节点。从提供的代码中不太清楚,但我认为您可以使用此策略。

无论如何,FullPath 文档位于以下链接中:https://msdn.microsoft.com/en-us/library/system.windows.forms.treenode.fullpath(v=vs.110(.aspx

希望它有帮助!

编辑:对不起,一整天的工作我在睡觉,因为他们说 FullPath 是一个属性,编辑