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

时间:2014-12-05 04:56:56

标签: c# .net winforms treeview

执行此代码将扩展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();
}

我试图在foreach中添加:

if (tn.Level == 1)
    tn.Expand();

但这不是解决方案。

也许我需要foreach中的foreach

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

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

1 个答案:

答案 0 :(得分:8)

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

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扩展前两个等级