में सभी पेड़ नोड्स (सभी स्तरों में) की एक सूची प्राप्त करें TreeView
नियंत्रण में मैं सभी पेड़ नोड्स (सभी स्तरों में) की सूची कैसे प्राप्त कर सकता हूं?TreeView नियंत्रण
उत्तर
मान लें कि आपके पास एक रूट नोड वाला पेड़ है, निम्न कोड हमेशा पेड़ नोड्स को गहरे तक लूप करेगा, फिर एक स्तर वापस जाएं और इसी तरह। यह प्रत्येक नोड के पाठ को मुद्रित करेगा। करुमेलूर के जवाब देने के लिए
TreeNode oMainNode = oYourTreeView.Nodes[0];
PrintNodesRecursive(oMainNode);
public void PrintNodesRecursive(TreeNode oParentNode)
{
Console.WriteLine(oParentNode.Text);
// Start recursion on all subnodes.
foreach(TreeNode oSubNode in oParentNode.Nodes)
{
PrintNodesRecursive(oSubNode);
}
}
अद्यतन (मेरे सिर के ऊपर से untested है) (इस के साथ उसकी/उसके समाधान के 2 पहले लाइनों डालें):,
foreach (var node in oYourTreeView.Nodes)
{
PrintNodesRecursive(node);
}
हाँ, तो कई जड़ें होने पर यह सभी सबट्री को थूक देगा। लेकिन वास्तव में: कई नोड्स वाला पेड़ प्रकृति में वास्तव में शायद ही कभी होता है :-) ओह, और यह "उसका" है;) – Krumelur
वास्तव में, प्रकृति में यह एक आम आम फाइनोमेना है :) प्रोग्रामिंग में मैं कुछ परिदृश्यों की कल्पना कर सकता हूं जहां यह उपयोगी है। उदाहरण के लिए: वृक्षदृश्य जिसमें एक कंपनी के विभाग होते हैं, प्रत्येक में उप-विभाग होते हैं और इसी तरह। आपके पास शायद कोई सुपर डिपार्टमेंट नहीं होगा। – dzendras
आप सही हैं। मैंने अपना जवाब समायोजित किया। एक टाइपो था। – Krumelur
लेज़ी LINQ दृष्टिकोण सिर्फ मामले में आप इस तरह कुछ ढूंढ रहे हैं:
private void EnumerateAllNodes()
{
TreeView myTree = ...;
var allNodes = myTree.Nodes
.Cast<TreeNode>()
.SelectMany(GetNodeBranch);
foreach (var treeNode in allNodes)
{
// Do something
}
}
private IEnumerable<TreeNode> GetNodeBranch(TreeNode node)
{
yield return node;
foreach (TreeNode child in node.Nodes)
foreach (var childChild in GetNodeBranch(child))
yield return childChild;
}
आप दो रिकर्सिव एक्सटेंशन विधियों का उपयोग कर सकते हैं। आप कॉल कर सकते हैं या तो myTreeView.GetAllNodes()
या myTreeNode.GetAllNodes()
:
public static List<TreeNode> GetAllNodes(this TreeView _self)
{
List<TreeNode> result = new List<TreeNode>();
foreach (TreeNode child in _self.Nodes)
{
result.AddRange(child.GetAllNodes());
}
return result;
}
public static List<TreeNode> GetAllNodes(this TreeNode _self)
{
List<TreeNode> result = new List<TreeNode>();
result.Add(_self);
foreach (TreeNode child in _self.ChildNodes)
{
result.AddRange(child.GetAllNodes());
}
return result;
}
क्योंकि TreeView कई स्तर हैं, पुनरावर्ती क्रिया करते हैं:
public void AddNodeAndChildNodesToList(TreeNode node)
{
listBox1.Items.Add(node.Text); // Adding current nodename to ListBox
foreach (TreeNode actualNode in node.Nodes)
{
AddNodeAndChildNodesToList(actualNode); // recursive call
}
}
TreeView में सभी प्रथम स्तर नोड्स के लिए इस समारोह फोन से:
foreach (TreeNode actualNode in treeView1.Nodes) // Begin with Nodes from TreeView
{
AddNodeAndChildNodesToList(actualNode);
}
कोड साइट C# TreeView
से है यदि आप डी नोड कुंजी को अद्वितीय होने की आवश्यकता नहीं है, बस सभी नोड कुंजियों को एक खाली स्ट्रिंग (""
) पर सेट करें, फिर आप TreeView के भीतर सभी नोड्स को वापस करने के लिए Treeview1.Nodes.Find("", true);
कर सकते हैं।
- 1. TreeView
- 2. WPF TreeView
- 3. TreeView
- 4. WPF: कस्टम + - TreeView
- 5. एक WPF TreeView
- 6. मैं TreeView
- 7. WPF TreeView
- 8. एक TreeView
- 9. आबाद TreeView
- 10. WPF treeview
- 11. JQuery Treeview
- 12. WPF Treeview
- 13. TreeNode.Handle Treeview
- 14. TreeView खोज
- 15. TreeView .NET/C#
- 16. WPF TreeView चयनित आइटम
- 17. एक WPF TreeView
- 18. बेस्ट AJAX TreeView
- 19. WPF TreeView बाध्यकारी
- 20. WPF TreeView वर्चुअलाइजेशन
- 21. WPF TreeView साफ़ चयन
- 22. wpf treeview बाध्यकारी
- 23. बाध्यकारी TreeView चयन ViewModel
- 24. फ़ाइल सिस्टम TreeView
- 25. TreeView TreeNodeCollection Key
- 26. .NET TreeView छवियों को प्रदर्शित नहीं करेगा
- 27. ttk treeview: वैकल्पिक पंक्ति रंग
- 28. मैं .NET में TreeView नियंत्रण के साथ त्रि-राज्य चेकबॉक्स कैसे बना सकता हूं?
- 29. रूट नोड पर बाल नोड्स कैसे खोजें [TreeView]
- 30. WPF: संभाल संपादन योग्य श्रेणीबद्ध डेटा/TreeView ~ डेटा ग्रिड संकर
यदि आप किसी उत्तर से संतुष्ट हैं तो यह बहुत अच्छा होगा कि आपने इसे स्वीकार किया है। धन्यवाद। – Krumelur