Как определить, является ли выбранный узел дочерним или родительским узлом в TreeView?

Как я могу узнать, является ли выбранный узел дочерним узлом или родительским узлом в TreeView контроля?

5 ответов


точно, как вы реализуете такую проверку, зависит от того, как вы определяете "дочерние" и "родительские" узлы. Но есть два свойства, выставленные каждым TreeNode объект, предоставляющий важную информацию:

  1. на Nodes свойства возвращает коллекцию 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.");
    }
    

можно использовать 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.
}

попробуй такое

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.SelectedNode == null

лучше выбрать.


для корневого узла является родительским TreeView .. можно проверить, сравниваем ли мы типы ->

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