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

时间:2011-04-16 05:55:37

标签: c# .net winforms treeview treenode

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

5 个答案:

答案 0 :(得分:32)

您实际执行此类检查的方式取决于您如何定义“子”和“父”节点。但是每个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 :(得分:7)

您可以使用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.
}

答案 2 :(得分:1)

试试这个

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.";
   }
}

答案 3 :(得分:0)

对于根节点是父TreeView ..可以检查我们是否比较了 - >

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

答案 4 :(得分:-1)

treeview.SelectedNode == null

是最好的选择。