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

我收到错误:Foreach无法在方法组上运行。你打算调用'方法组'吗?Foreach无法在方法组上运行

+1

似乎'节点'是一种方法。它是如何声明的?如果它是一种方法,则应该调用'foreach(treeNode.Nodes()中的TreeNode tn)'。 – Andrei

+0

@RedFilter TreeNode类来自元数据。它来自.Net,它不是我的。 –

+0

您能为您的TreeNode提供完整的类型名称吗?看起来你引用了错误的类型,就像WinForms一样。 –

回答

6

假设你正在使用的包装TreeView控件,应该不会是ChildNodes

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

TreeView.Nodes给出表示TreeView控件的根节点树节点对象的集合。

要访问根节点的子节点,请使用节点的ChildNodes属性。

例如使用循环

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

或使用的foreach

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

它不起作用。 –

+0

@ user966638你会得到错误吗? – Damith

11

这里的问题是,Nodes是一种方法,但你财产使用:) 所以这行代码

foreach (TreeNode tn in treeNode.Nodes) 

应be

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

伙计,U摇滚... –