2011-10-02 33 views

回答

6

您可以遞歸添加到列表中是這樣的:

public void AddChildren(List<TreeNode> Nodes, TreeNode Node) 
{ 
    foreach (TreeNode thisNode in Node.Nodes) 
    { 
     Nodes.Add(thisNode); 
     AddChildren(Nodes, thisNode); 
    } 
} 

然後調用根節點這個例程傳:

List<TreeNode> Nodes = new List<TreeNode>(); 
AddChildren(Nodes, treeView1.Nodes[0]); 
+0

感謝你爲這個代碼!我不得不改變foreach,使其工作,雖然,像這樣:foreach(TreeNode thisNode在Node.ChildNodes)< - Node.ChildNodes而不是Node.Nodes –

+0

@Svein這是因爲你使用的是WPF,但是這個代碼是用於WinForms 。 WinForms中沒有ChildNodes。 –

+0

啊,好吧,我的壞!但是,無論如何感謝:) –

-2

你可以做這樣的事情。要得到樹視圖中的所有節點..

private void PrintRecursive(TreeNode treeNode) 
{ 
    // Print the node. 
     System.Diagnostics.Debug.WriteLine(treeNode.Text); 
     MessageBox.Show(treeNode.Text); 
     // Print each node recursively. 
     foreach (TreeNode tn in treeNode.Nodes) 
     { 
      PrintRecursive(tn); 
     } 
} 

    // Call the procedure using the TreeView. 
private void CallRecursive(TreeView treeView) 
{ 
     // Print each node recursively. 
     TreeNodeCollection nodes = treeView.Nodes; 
     foreach (TreeNode n in nodes) 
     { 
      PrintRecursive(n); 
      } 
    } 

你會請採取alook這個鏈接。

http://msdn.microsoft.com/en-us/library/wwc698z7.aspx

9
public IEnumerable<TreeNode> GetChildren(TreeNode Parent) 
{ 
    return Parent.Nodes.Cast<TreeNode>().Concat(
      Parent.Nodes.Cast<TreeNode>().SelectMany(GetChildren)); 
} 
相關問題