如何确定所选节点是否是TreeView中的子节点或父节点?

问题描述:

如何查找TreeView控件中所选节点是子节点还是父节点?如何确定所选节点是否是TreeView中的子节点或父节点?

您究竟如何实现这种检查取决于您如何定义“子”和“父”节点。但也有由每个TreeNode对象暴露两个属性提供了重要的信息:

  1. Nodes property返回由该特定节点包含TreeNode对象的集合。因此,通过简单的检查,看看有多少孩子选定节点包含,可以判断它是否是一个父节点:

    if (selectedNode.Nodes.Count == 0) 
    { 
        MessageBox.Show("The node does not have any children."); 
    } 
    else 
    { 
        MessageBox.Show("The node has children, so it must be a parent."); 
    } 
    
  2. 为了获得更多的信息,你也可以检查Parent的价值属性。如果这个值是null,那么节点在TreeView的根目录(它没有父):

    if (selectedNode.Parent == null) 
    { 
        MessageBox.Show("The node does not have a parent."); 
    } 
    else 
    { 
        MessageBox.Show("The node has a parent, so it must be a child."); 
    } 
    
+1

太感谢你了。 – Priyanka 2011-04-16 07:07:21

您可以使用TreeNode.Parent属性。

如果它的值是null-引用,则该节点位于根级别。

TreeView treeView = ... 
var selectedNode = treeView.SelectedNode; 

if(selectedNode ! = null) 
{ 
    if(selectedNode.Parent == null) 
    {  
     // Root-level node 
    } 
    else 
    {  
     // Child node 
    } 
} 
else 
{ 
    // A node hasn't been selected. 
} 

treeview.SelectedNode == null 

是最好的选择。

+0

我不明白这是如何回答这个问题的。 – JDB 2012-10-09 03:41:33

试试这个

private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) 
{ 
    Label1.Text = ""; 
    if(e.Node.Parent!= null && 
    e.Node.Parent.GetType() == typeof(TreeNode)) 
    { 
     Label1.Text = "Parent: " + e.Node.Parent.Text + "\n" 
     + "Index Position: " + e.Node.Parent.Index.ToString(); 
    } 
    else 
    { 
     Label1.Text = "This is parent node."; 
    } 
} 

对于根节点是父TreeView的..它可以检查,如果我们比较的类型 - >

if (currentNode.Parent.GetType() == typeof(TreeView)) 
{ 
    // root node 
}