2011-10-02 11 views
7

में ट्रीव्यू कंट्रोल में पेरेंट नोड के सभी बच्चे नोड्स को सूचीबद्ध करें मेरे पास एक वृक्षदृश्य नियंत्रण है, और इसमें एक पैरेंटव्यू नोड और उस अभिभावक से कई बच्चे नोड्स शामिल हैं। मुख्य माता-पिता से सभी बच्चे नोड्स की सरणी या सूची प्राप्त करने का कोई तरीका है? यानी Treeview.nodes [0], या पहले पैरेंट नोड से सभी नोड्स प्राप्त कर रहे हैं।विज़ुअल सी #

उत्तर

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 को बदलना पड़ा, इस तरह: foreach (नोड में TreeNode thisNode.ChildNodes) <- नोड। Node.ChildNodes नोड के बजाय। नोड्स –

+0

@Svein ऐसा इसलिए है क्योंकि आप WPF का उपयोग कर रहे हैं लेकिन यह कोड WinForms के लिए है । WinForms में कोई चाइल्ड नोड्स नहीं है। –

+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)); 
} 
संबंधित मुद्दे