Привет и заранее спасибо за помощь.
У меня есть древовидная структура, которая заполняется из коллекции папок на жестком диске. Его структура похожа на следующую (однако структура является динамической):
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)
Однако вышеописанное не работает должным образом. Он удаляет только некоторые узлы, а не все целевые узлы. Не могли бы вы помочь мне исправить мой саб?
Большое спасибо