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更改爲返回列表的函數。 –