I am selecting all controls I have in a form
if controls are Treeviews
, I'll iterate all nodes they have
I need something like: (And it is my code)
foreach (Control c in PanelSM.Controls)
{
if (c is TreeView)
{
TreeNodeCollection myNodes = c.Nodes;//<<<<< Here is a mistake
foreach (TreeNode n in myNodes)
{
String text = rm.GetString(n.Name);
//And more things
//...
//...
//...
}
}
//...
}
Any idea?
Thank You
You need to use recursion. A method like this should suffice
IEnumerable<TreeNode> Collect(TreeNodeCollection nodes)
{
foreach(TreeNode node in nodes)
{
yield return node;
foreach (var child in Collect(node.Nodes))
yield return child;
}
}
Then in your method you can just do
foreach (var node in Collect(tree.Nodes))
{
// you will see every child node here
}
It's pretty easy:
void TraverseTree(TreeNodeCollection nodes)
{
foreach (var child in nodes)
{
DoSomethingWithNode(child);
TraverseTree(child.Nodes);
}
}
And call it with:
TraverseTree(MyTreeView.Nodes);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With