One of the possible modifications for this is to use the return yield operator to provide all tree nodes as an enumerated collection:
private IEnumerable<UltraTreeNode> AllTreeNodes()
{
Queue<UltraTreeNode> queue = new Queue<UltraTreeNode>(ultraTree1.Nodes.OfType<UltraTreeNode>());
while (queue.Count > 0)
{
UltraTreeNode node = queue.Dequeue();
foreach (UltraTreeNode child in node.Nodes)
queue.Enqueue(child);
yield return node;
}
}
Then you can start each element and perform any required processing (whether it be selection or another):
foreach (var node in AllTreeNodes())
{
node.Selected = true;
}
source
share