UltraTree Infragistics - выберите все узлы - PullRequest
3 голосов
/ 07 июля 2010

В Infragistics UltraTree, как выбрать все узлы под корнем?

Ответы [ 2 ]

3 голосов
/ 07 июля 2010

Насколько я знаю, нет способа выбрать все узлы.Но вы можете создать свой собственный, как это:

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;
}
0 голосов
/ 23 сентября 2014

Одной из возможных модификаций для этого является использование оператора yield return для предоставления всех узлов дерева в качестве перечислимой коллекции:

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;
    }
}

Затем вы можете пройти через каждый элемент и выполнить любую обработку, какую захотите (будь то пометить их выбранными или что-то еще):

foreach (var node in AllTreeNodes())
{
    // Take whatever action is needed
    //
    node.Selected = true;
}
...