Я получил код в vb.net, который позволяет отображать древовидную структуру каталога. Этот код использует рекурсивную подпроцедуру (sub) для обновления узлов TreeView без использования любого из этих методов. Я хотел знать, как это было возможно. Вот код:
Imports System.IO
Public Class Form1
Const DirectoryToList As String = "." ' The current in this case
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Defines the first node
Me.MyTreeView.TopNode = Me.MyTreeView.Nodes.Add(DirectoryToList, DirectoryToList)
'Tree structure of the first node
For Each Directory As String In Directory.GetDirectories(DirectoryToList)
Me.MyTreeView.TopNode.Nodes.Add(Directory, Path.GetFileName(Directory))
'Recursive
ListFolderTree(Directory, Me.MyTreeView.TopNode)
Next
'Files of the first node
For Each File As String In Directory.GetFiles(DirectoryToList)
Me.MyTreeView.TopNode.Nodes.Add(Path.GetFileName(File))
Next
End Sub
' ListFolderTree is the "strange" sub whose operation I don't understand
Sub ListFolderTree(ByVal DirectoryActuel As String, ByVal NodeActuel As TreeNode)
'Recovers the node in which we are
Dim Node As TreeNode = NodeActuel.Nodes(DirectoryActuel)
'Directories of this node
For Each Directory As String In Directory.GetDirectories(DirectoryActuel)
Node.Nodes.Add(Directory, Path.GetFileName(Directory))
'Recursive
ListFolderTree(Directory, Node)
Next
'Files for this node
For Each File As String In Directory.GetFiles(DirectoryActuel)
Node.Nodes.Add(Path.GetFileName(File))
Next
End Sub
End Class
И результат ожидаемый, поэтому древовидная структура.
Не могли бы вы объяснить мне, что я не понимаю в подпроцедуре «ListFolderTree»?
Я знаю, что рекурсивность может получить файлы и другие папки, которые сами находятся в папках выше в дереве, но как данные сохраняются в элементе управления TreeView?