Здравствуйте и спасибо за вашу помощь.Пройти через узлы дерева, чтобы удалить определенные узлы
У меня есть древовидная структура, которая заполняется из коллекции папок жесткого диска. Его структура похожа на следующее (однако структура является динамическим):
My Disk:
|
|--folder1(tag:folder)
| |--subfolder1(tag:folder)
|--folder2(tag:folder)
|--folder3(tag:folder)
|--folder4(tag:folder)
|file1(tag: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
я называю суб следующим образом:
deleteNode(treeview1.Nodes(0).Nodes)
Однако вышеуказанное не работает должным образом. Он удаляет только некоторые узлы, а не все целевые узлы. Не могли бы вы помочь мне, установив мой суб?
Большое спасибо
Как заметка на полях (мое мнение): Turn Option Strict On, это экономит много головной боли. – Bobby 2010-12-16 12:25:49