После прочистки интернета, чтобы сделать это, насколько это возможно, я не смог найти что-то, что работало для меня. Я взял кодировку от this question, пытаясь заставить ее работать, но не могу понять, как спасти мою жизнь. Вот что у меня есть:Отображение СПЕЦИФИЧЕСКИХ папок/файлов в treeview
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Get a list of drives
Dim drives As System.Collections.ObjectModel.ReadOnlyCollection(Of DriveInfo) = My.Computer.FileSystem.Drives
Dim rootDir As String = String.empty
'Now loop thru each drive and populate the treeview
For i As Integer = 0 To drives.Count - 1
rootDir = drives(i).Name
'Add this drive as a root node
TreeView1.Nodes.Add(rootDir)
'Populate this root node
PopulateTreeView(rootDir, TreeView1.Nodes(i))
Next
End Sub
Private Sub PopulateTreeView(ByVal dir As String, ByVal parentNode As TreeNode)
Dim folder As String = String.Empty
Try
Dim folders() As String = IO.Directory.GetDirectories(dir)
If folders.Length <> 0 Then
Dim childNode As TreeNode = Nothing
For Each folder In folders
childNode = New TreeNode(folder)
parentNode.Nodes.Add(childNode)
PopulateTreeView(folder, childNode)
Next
End If
Catch ex As UnauthorizedAccessException
parentNode.Nodes.Add(folder & ": Access Denied")
End Try
End Sub
Однако это только перечисляет диски & свои папки и мне нужно, чтобы список каталогов и файлов из определенного каталога с самого начала, не имея, чтобы пройти весь путь вниз по дереву чтобы найти то, что вы специально ищете. Я попытался изменить rootDir
на адрес конкретной папки, к которой я пытаюсь получить доступ, но безрезультатно. У кого-нибудь есть предложения?
Вы пытаетесь отображать папки или файлы только для расширенных родителей? Ваша текущая реализация перечислит каждый файл в каждой папке на всей машине. Это происходит навсегда. Почему бы вам не начать с каталогов верхнего уровня и «PopulateTreeView», когда пользователь нажимает, чтобы развернуть его? Гораздо быстрее и менее интенсивно все сразу. – Brandon
Что я пытаюсь сделать, это взять код выше, и он работает для определенного пути, а не для всех дисков. –
Код выше уже будет работать по определенному пути. Вызовите PopulateTreeView следующим образом: 'PopulateTreeView (yourPath, TreeView1.Nodes (0))'. Посмотрите на мой ответ ниже, вы заметите, что он делает это для определенного пути и запускается при нажатии. – Brandon