【发布时间】:2016-11-09 22:35:30
【问题描述】:
我有一个组合框,可以从中选择文件夹名称。在我的 D:\ 中搜索此文件夹,当找到它们时,也必须在其中找到名为“Versions”的文件夹。然后这个“版本”子文件夹需要填充树视图上的所有子文件夹。关于如何做到这一点的任何想法,我真的碰到了这个?!?到目前为止我的代码(没有错误,但没有任何反应):
编辑后的代码(仍然无效):
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”的文件夹,如组合框项所示。然后,在此文件夹中,必须对名为“Versions”的文件夹进行另一次搜索。最后,从“版本”填充所有底层子文件夹/文件。在 Treeview 上的“版本”之前或同一级别没有文件夹!在这种情况下,我的“版本”路径是“D:\MyDocuments\Programmes\Microsoft\Versions\” - 搜索路径不同,但都在“D:\”目录中,并且都包含“版本”文件夹。
非常感谢任何帮助,在此先感谢!
【问题讨论】:
-
这是一个调试问题。代码运行时 MyCombo.Text 的值是多少?
-
@LarsTech, MyCombo.Text 值为“Microsoft” - 所以它应该在 D:\ 中搜索 Microsoft 文件夹。搜索路径没问题。正如我在调试器中看到的那样,它停留在“对于每个 f 作为 FileInfo”。
-
代码按其他方式发布。
-
@LarsTech 不适合我。我的情况可能有什么问题?
-
也适合我。