如何设置扩展TreeView节点的级别数?

Hor*_*ado 3 .net c# treeview winforms

执行此代码将扩展root下的所有主节点.

root
    images
    files
    docs

但我希望如果我将它从0更改为1以某种方式更改级别,以便它将扩展到下一级别.

root
   images
        myimages
   files
       myfiles
   docs
      mydocs
foreach (TreeNode tn in treeView1.Nodes)
{
    if (tn.Level == 0)
        tn.Expand();
}
Run Code Online (Sandbox Code Playgroud)

我试图在foreach中添加:

if (tn.Level == 1)
    tn.Expand();
Run Code Online (Sandbox Code Playgroud)

但那不是解决方案.

也许我需要foreach进去foreach

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

因此,在实时获取目录并添加节点时,我想扩展节点级别.

Pet*_*iho 11

因为数据结构是递归的,所以IMHO处理问题的最合适的方法是递归遍历它.像这样的东西:

void ExpandToLevel(TreeNodeCollection nodes, int level)
{
    if (level > 0)
    {
        foreach (TreeNode node in nodes)
        {
            node.Expand();
            ExpandToLevel(node.Nodes, level - 1);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

你会这样称呼它:

ExpandToLevel(treeView1.Nodes, 1);
Run Code Online (Sandbox Code Playgroud)

这将扩大到第一级.通过2扩展前两个级别等.

  • 快速干净的递归。爱它。 (2认同)