检查树视图中的根节点和子节点是否相同
本文关键字:子节点 是否 根节点 视图 检查 | 更新日期: 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 是一个属性,编辑