gpt4 book ai didi

vb.net - 循环遍历 TreeView 节点以删除某些节点

转载 作者:行者123 更新时间:2023-12-04 06:39:21 26 4
gpt4 key购买 nike

您好,在此先感谢您的帮助。

我有一个从 HDD 文件夹集合填充的树 View 。它的结构类似于以下(但结构是动态的):

My Disk:
|
|--folder1(tag:folder)
| |--subfolder1(tag:folder)
|--folder2(tag:folder)
|--folder3(tag:folder)
|--folder4(tag:folder)
|file1(tag:file)

我想从树中删除所有不包含带有标签"file"(基本上是空文件夹)的节点的节点。我希望生成的树结构如下所示:
My Disk:
|--folder4(tag:folder)
|file1(tag:file)

我想出的最好的是以下内容:
Private Sub deleteNode(byval nc as TreeNodeCollection)
For Each tn As TreeNode In nc
'delete node if it applies
If tn.Tag = "folder" Then
If tn.Nodes.Count = 0 Then
nc.Remove(tn)
End If
End If

If tn.Nodes.Count > 0 Then
deleteNode(tn.Nodes)
End If
Next
End Sub

我调用 sub 如下:
deleteNode(treeview1.Nodes(0).Nodes)

但是,上述方法无法正常工作。它只删除一些节点而不是所有的目标节点。你能帮我修好我的潜艇吗?

非常感谢

最佳答案

据我所知,您无法编辑您正在枚举的集合,因此它删除了一些节点也令人印象深刻。

您可能会 wanna try another approach :

Private Sub RemoveEmptyFolderNodes(ByVal nc as TreeNodeCollection)
For i As Integer = nc.Count - 1 To 0 Step -1
If nc(i).Nodes.Count > 0 Then
RemoveEmptyFolderNodes(nc(i).Nodes)
End If
If nc(i).Nodes.Count = 0 AndAlso nc(i).Tag.ToString() = "folder" Then
nc.RemoveAt(i)
End If
Next
End Sub

这是未经测试的。

关于vb.net - 循环遍历 TreeView 节点以删除某些节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4460650/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com