我有一個組合框,我從中選擇文件夾名稱。在我的D:\中搜索這個文件夾,並且當它們被找到時,在它中找到一個名爲「Versions」的文件夾也必須找到。然後,這個「版本」子文件夾需要在樹狀視圖中填充所有子文件夾。關於如何做到這一點的任何想法,我真的碰到了這個?!?到目前爲止我的代碼(沒有錯誤,但沒有任何反應):從Combobox.Text填充Treeview目錄
編輯的代碼(仍然沒有工作):
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim folder1 As String() = Directory.GetDirectories("D:\", MyCombo.Text, System.IO.SearchOption.AllDirectories)
For Each folder1 As String In MyDirectory
Dim SubDirectories As String() = IO.Directory.GetDirectories(folder1, "*Versions*", System.IO.SearchOption.AllDirectories)
For Each subfolder In SubDirectories
PopulateFolder(subfolder)
Next
Next
End Sub
Private Sub PopulateFolder(folder As String)
tv1.Nodes(0).Text = folder
tv1.Nodes(0).ImageIndex = 1
Dim DirSep = Path.DirectorySeparatorChar
Dim thisFolder As String
Dim tn As TreeNode
For Each d As String In Directory.EnumerateDirectories(folder)
' split the path to get the last segment
Dim split = d.Split(DirSep)
thisFolder = split(split.Length - 1)
tn = New TreeNode(thisFolder, 1, 1)
tv1.Nodes(0).Nodes.Add(tn)
PopulateFiles(tn, d)
Next
PopulateFiles(tv1.Nodes(0), folder)
End Sub
Private Sub PopulateFiles(tn As TreeNode, folder As String)
For Each f As String In Directory.EnumerateFiles(folder, "*.*")
' Path will extract the name:
tn.Nodes.Add("", Path.GetFileName(f), 0)
Next
End Sub
這裏是截圖和我需要的另一種解釋:
因此,第一個代碼必須搜索名爲「Microsoft」的文件夾作爲組合框項目顯示。然後,在該文件夾中,對於名爲「版本」的文件夾,必須進行另一次搜索。最後,從「版本」填充所有基礎子文件夾/文件。在Treeview的「版本」之前或之後的文件夾中沒有文件夾!在這種情況下,我的「版本」路徑是「D:\ MyDocuments \ Programs \ Microsoft \ Versions \」 - 搜索路徑不同,但都位於「D:\」目錄中,全部包含「版本」文件夾。
任何幫助非常感謝,提前致謝!
這是一個調試問題。代碼運行時,MyCombo.Text的價值是什麼? – LarsTech
@LarsTech,MyCombo.Text的值是「Microsoft」 - 所以它應該搜索D:\中的Microsoft文件夾。搜索路徑是O.K.正如我在調試器中看到的那樣,它在「針對每個f作爲FileInfo」中進行了調查。 – LuckyLuke82
代碼以其他方式發佈。 – LarsTech