2011-10-02 11 views
7

私はtreeviewコントロールを持っていて、その親から1つの親ノードといくつかの子ノードを含んでいます。メインの親からすべての子ノードの配列またはリストを取得する方法はありますか? treeview.nodes [0]、または最初の親ノードからすべてのノードを取得します。Visual C#のツリービューコントロール内の親ノードのすべての子ノードを一覧表示する

答えて

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

あなたは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)); 
} 
関連する問題