C# 如何设置展开TreeView节点的级别?

C# 如何设置展开TreeView节点的级别?,c#,.net,winforms,treeview,C#,.net,Winforms,Treeview,执行此代码将展开根目录下的所有主节点 root images files docs 我试图在foreach中添加: if (tn.Level == 1) tn.Expand(); 但这不是一个解决办法 也许我需要foreach中的foreach 所有这些代码都是在BackgroundWorker下工作的方法的一部分,该方法递归地获取我的FTP服务器目录和文件列表 因此,在实时获取目录和添加节点时,我希望扩展节点级别。因为数据结构是递归的,所以最合适的处理方法是递

执行此代码将展开根目录下的所有主节点

root images files docs 我试图在foreach中添加:

if (tn.Level == 1)
    tn.Expand();
但这不是一个解决办法

也许我需要
foreach
中的
foreach

所有这些代码都是在
BackgroundWorker
下工作的方法的一部分,该方法递归地获取我的FTP服务器目录和文件列表


因此,在实时获取目录和添加节点时,我希望扩展节点级别。

因为数据结构是递归的,所以最合适的处理方法是递归地遍历它。大概是这样的:

void ExpandToLevel(TreeNodeCollection nodes, int level)
{
    if (level > 0)
    {
        foreach (TreeNode node in nodes)
        {
            node.Expand();
            ExpandToLevel(node.Nodes, level - 1);
        }
    }
}
ExpandToLevel(treeView1.Nodes, 1);
你可以这样称呼它:

void ExpandToLevel(TreeNodeCollection nodes, int level)
{
    if (level > 0)
    {
        foreach (TreeNode node in nodes)
        {
            node.Expand();
            ExpandToLevel(node.Nodes, level - 1);
        }
    }
}
ExpandToLevel(treeView1.Nodes, 1);
这只会扩大第一个层次。通过2来扩展前两个级别,等等