UltraTree Infragistics - select all nodes

In Infragistics UltraTree, how to select all nodes under the root?

+3
source share
2 answers

As far as I know, there is no way to select all nodes. But you can build your own like this:

Queue<UltraTreeNode> queue = new Queue<UltraTreeNode>(ultraTree1.Nodes);
while (queue.Count > 0)
{
    UltraTreeNode node = queue.Dequeue();
    foreach(UltraTreeNode child in node.Nodes)
        queue.Enqueue(child);
    node.Selected = true;
}
+3
source

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())
{
    // Take whatever action is needed
    //
    node.Selected = true;
}
0
source

Source: https://habr.com/ru/post/1753483/


All Articles