Comment puis-je déterminer si le noeud sélectionné est un noeud enfant ou parent dans TreeView?

Comment puis-je savoir si le noeud choisi est un noeud enfant ou un noeud parent dans le TreeView contrôle?

17
demandé sur Cody Gray 2011-04-16 09:55:37

5 réponses

Exactement comment mettre en œuvre une telle vérification dépend de la définition de "enfant" et "parent" nœuds. Mais il y a deux propriétés exposées par chaque TreeNode objet que de fournir des informations importantes:

  1. Nodes propriété renvoie la collection de TreeNode objets contenus par ce noeud particulier. Ainsi, en vérifiant simplement pour voir combien de noeuds enfant le noeud sélectionné contient, vous pouvez déterminer si oui ou non c'est un parent noeud:

    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. pour obtenir plus d'information, vous pouvez aussi examiner la valeur de Parent propriété. Si cette valeur est null, alors le noeud est au niveau de la racine du TreeView (il n'a pas un parent):

    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.");
    }
    
30
répondu Cody Gray 2011-04-16 06:00:03

Vous pouvez utiliser le TreeNode.Parent propriété.

Si sa valeur est null-référence, le noeud est au niveau de la racine.

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.
}
5
répondu Ani 2011-04-16 06:02:41

Essayez ceci

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.";
   }
}
1
répondu Moory Pc 2013-11-26 09:41:00
treeview.SelectedNode == null

est le meilleur choix.

0
répondu Nilesh Moradiya 2012-10-09 03:37:47

Pour le nœud racine est le parent TreeView .. il est possible de vérifier si nous comparons les types de ->

if (currentNode.Parent.GetType() == typeof(TreeView)) 
{
    // root node
}
0
répondu HuckFin.7b 2016-10-04 07:52:26