如何获取树视图中所有节点的索引

本文关键字:节点 索引 视图 何获取 获取 | 更新日期: 2023-09-27 18:31:10

我尝试使用:

TreeNode node = TreeView1.FindNode()

但它只找到根节点。它找不到子节点。

我想

获取所有节点的索引,之后我想使用上面的代码按索引查找节点并选中复选框。

我尝试使用 foreach 遍历所有节点,但找不到子节点和索引。

我正在使用Visual Studio 2013。

如何获取树视图中所有节点的索引

以下方法允许您遍历树:

public static IEnumerable<T> Traverse<T>(
    this IEnumerable<T> source
    , Func<T, IEnumerable<T>> childrenSelector)
{
    var stack = new Stack<T>(source);
    while (stack.Any())
    {
        var next = stack.Pop();
        yield return next;
        foreach (var child in childrenSelector(next))
            stack.Push(child);
    }
}

使用它,您可以编写:

var allNodes = new[]{root}.Traverse(node => node.Nodes);

然后,您可以对整个树中所有节点的序列执行任何操作,并对它们执行任何操作。