在Visual C#中的树视图控件中列出父节点的所有子节点

use*_*696 8 c# treeview

我有一个treeview控件,它包含一个父节点和来自该父节点的几个子节点.有没有办法从主父节点获取所有子节点的数组或列表?即从treeview.nodes [0]或第一个父节点获取所有节点.

Mag*_*nus 8

public IEnumerable<TreeNode> GetChildren(TreeNode Parent)
{
    return Parent.Nodes.Cast<TreeNode>().Concat(
           Parent.Nodes.Cast<TreeNode>().SelectMany(GetChildren));
}
Run Code Online (Sandbox Code Playgroud)


Dav*_*nan 6

您可以递归地添加到列表中,如下所示:

public void AddChildren(List<TreeNode> Nodes, TreeNode Node)
{
    foreach (TreeNode thisNode in Node.Nodes)
    {
        Nodes.Add(thisNode);
        AddChildren(Nodes, thisNode);
    }
}
Run Code Online (Sandbox Code Playgroud)

然后在根节点中调用此例程:

List<TreeNode> Nodes = new List<TreeNode>();
AddChildren(Nodes, treeView1.Nodes[0]);
Run Code Online (Sandbox Code Playgroud)