在Infragistics UltraTree中,如何选择根目录下的所有节点?
答案 0 :(得分: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;
}
答案 1 :(得分: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;
}