3

在 Infragistics UltraTree 中,如何选择根下的所有节点?

4

2 回答 2

3

据我所知,没有选择所有节点的方法。但是您可以像这样构建自己的:

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;
}
于 2010-07-07T09:34:35.317 回答
0

一种可能的修改是使用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;
}
于 2014-09-23T15:34:05.470 回答