1
我有一个表单,允许您单击一个按钮,它会触发一个OpenFileDialog。从那里,你假设在该文件夹中选择一个特定的文件,然后该程序应该从你在/subjects
文件夹中的文件夹开始并列出这些目录。GetDirectory将不会列出所有目录
目前,我有3个目录/subjects
:english
,mathematics
和cte
。
我的问题是,当程序运行时,它只会列出组合框中的英文目录,而不会列出任何其他目录。
Private Sub btnDocumentChoice_Click(sender As Object, e As EventArgs) Handles btnDocumentChoice.Click
Dim ofd As New OpenFileDialog
Dim DirList As New ArrayList
If ofd.ShowDialog = Windows.Forms.DialogResult.OK AndAlso ofd.FileName <> "" Then
strRootLocation = (Path.GetDirectoryName(ofd.FileName))
GetDirectories(strRootLocation + "/subject/", DirList)
'MessageBox.Show(Path.GetDirectoryName(ofd.FileName))
End If
End Sub
Private Sub OpenFileDialog1_FileOk(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles OpenFileDialog1.FileOk
strRootLocation = OpenFileDialog1.FileName
cmbSubject.Items.Add(strRootLocation)
End Sub
Sub GetDirectories(ByVal StartPath As String, ByRef DirectoryList As ArrayList)
Dim Dirs() As String = Directory.GetDirectories(StartPath)
DirectoryList.AddRange(Dirs)
For Each Dir As String In Dirs
GetDirectories(Dir, DirectoryList)
cmbSubject.Items.Add(Replace(Path.GetDirectoryName(Dir), strRootLocation + "\subject", ""))
cmbSubject.Items.Remove("")
Next
End Sub
您的内部GetDirectories每个循环破坏DirectoryList。所以你只会看到最后找到的目录。使用调试器轻松查看btw,只需在遍历代码时添加一个WatchList DirectoryList。 –
那么,我会如何解决这个问题呢?请原谅我的失明...... –
无法猜测你为什么添加GetDirectories调用。只要删除它。如果要通过子目录递归,请将GetDirectories更改为返回列表的函数。 –