2011-10-25 4 views
8
private void PrintRecursive(TreeNode treeNode) 
    { 
     foreach (TreeNode tn in treeNode.Nodes) 
     { 
      PrintRecursive(tn); 
     } 
    } 

Aparece el error: Foreach no puede operar en un grupo de métodos. ¿Intentó invocar el 'grupo de métodos'?Foreach no puede operar en un grupo de métodos

+1

Parece que 'Nodos 'es un método. ¿Cómo se declara? Si es un método, debería llamar a 'foreach (TreeNode tn en treeNode.Nodes())' en su lugar. – Andrei

+0

@RedFilter La clase TreeNode es de metadatos. Es de .Net, no es mío. –

+0

¿Podría proporcionar el nombre completo para su TreeNode? Parece que hiciste referencia al tipo incorrecto, como a WinForms. –

Respuesta

6

Suponiendo que está usando el control TreeView envasados, ¿no debería ser ChildNodes:?

foreach (TreeNode node in treeNode.ChildNodes) ... 
1

TreeView.Nodes da una colección de objetos TreeNode que representa los nodos raíz en el control TreeView.

Para acceder a los nodos secundarios de un nodo raíz, use la propiedad ChildNodes del nodo.

p. Ej. utilizando para el bucle

void PrintRecursive(TreeNode node) 
{ 
    for(int i=0; i <node.ChildNodes.Count; i++) 
    { 
    PrintRecursive(node.ChildNodes[i]); 
    } 
} 

o usando foreach

void PrintRecursive(TreeNode node) 
{ 
    foreach(TreeNode node in node.ChildNodes) 
    { 
    PrintRecursive(node); 
    } 
} 
+0

No funciona. –

+0

@ user966638 ¿Estás recibiendo un error? – Damith

11

El problema aquí es que es un método Nodes pero se utilizan como propiedad :) Así que esta línea de código

foreach (TreeNode tn in treeNode.Nodes) 

debe ser

foreach (TreeNode tn in treeNode.Nodes()) 
+0

Amigo, U rock ... –

Cuestiones relacionadas