执行此代码将扩展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服务器目录和文件列表。
因此实时获取目录并添加节点我想扩展节点级别。
答案 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扩展前两个等级