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