2011-10-02 8 views

답변

6

이 같은 재귀 목록에 추가 할 수 있습니다

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

이 코드 주셔서 감사합니다 :

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

그런 다음 루트 노드에서이 루틴 통과를 호출 ! foreach (Node.ChildNodes의 TreeNode thisNode) <- Node.Nodes 대신 Node.ChildNodes –

+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); 
      } 
    } 

당신은 pls는이 링크에 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)); 
} 
관련 문제