2011-09-15 24 views
5

Todos mis nodos TreeView tienen una ID única para su profundidad de nodo.Buscar nodo TreeView por valor

Quiero establecer Checked=True en el nodo TreeView que coincida con un cierto valor.

Actualmente estoy haciendo lo siguiente:

Dim value As Integer = 57 

For Each n As TreeNode In tvForces.Nodes 
    If n.Value = value Then n.Checked = True 
Next 

¿Hay una mejor manera de encontrar el nodo que quiero establecer como Checked=True en lugar de bucle a través de cada nodo?

Busco algo como:

Dim value As Integer = 57 

n.FindNodesByValue(value)(0).Checked = True 

¿Hay algo así que puedo usar?

+0

Tenga en cuenta que sólo se pone tvForces.Nodes el primer nivel (raíz) nodos. Si quieres todos los nodos, necesitarás atravesar el árbol. –

Respuesta

5

Pseudocódigo (c#) para demostrar una idea usando LINQ Where() + List.ForEach():

nodes.Where(node => node.Value == "5") 
    .ToList() 
    .ForEach((node => node.Checked = true)); 

Ver MSDN siguiente enlace de arriba para VB.NET sintaxis de ambos métodos.

-1
for (int j = 0; j < TreeView1.CheckedNodes.Count; j++) 
    {  
     Response.Write(TreeView1.CheckedNodes[j].Value)); 
    } 
+2

Por favor, agregue alguna explicación. –

0
   foreach (TreeNode node in TreeView1.Nodes) 
       { 
        if (node.Value == "8") 
        { 
         node.Checked = true; 
        } 
        foreach (TreeNode item1 in node.ChildNodes) 
        { 
         if (item1.Value == "8") 
         { 
          item1.Checked = true; 
         } 
        } 
       }    
+0

amablemente explique su código un poco para ayudar al OP – Gogo