So verwende ich den Ordner-Browser-Dialog in Kleines Visual Basic . Dieser Code löst das Problem des nicht ausgewählten Anfangsordners und wählt außerdem den Ordner aus der Zwischenablage oder der Registrierung (falls vorhanden) aus, und wenn der Ordner gelöscht wird, geht er über die Eltern, bis er einen vorhandenen Ordner auswählt. Dies macht die Verwendung des Dialogs sehr komfortabel.
Beachten Sie, dass ich 4 Registerkarten sende, weil ich die Schaltfläche "Neuen Ordner erstellen" einblende, aber wenn Sie diese ausblenden, verwenden Sie nur zwei Registerkarten.
Public Shared Function OpenFolderDialog(initialFolder As String) As String
Dim folder = GetInitialFolder(initialFolder)
If folder = "" Then folder = GetInitialFolder(System.Windows.Clipboard.GetText())
If folder = "" Then folder = GetInitialFolder(GetSetting("sVB", "OpenFolder", "LastFolder", ""))
Dim th As New Threading.Thread(
Sub()
Threading.Thread.Sleep(300)
System.Windows.Forms.SendKeys.SendWait("{TAB}{TAB}{TAB}{TAB}{RIGHT}")
End Sub)
th.Start()
Try
Dim dlg As New System.Windows.Forms.FolderBrowserDialog With {
.Description = "Select a folder:",
.SelectedPath = folder
}
If dlg.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
SaveSetting("sVB", "OpenFolder", "LastFolder", dlg.SelectedPath)
OpenFolderDialog = dlg.SelectedPath
End If
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Function
Private Shared Function GetInitialFolder(folder As String) As String
Try
If folder <> "" Then
If IO.File.Exists(folder) Then
folder = Path.GetDirectoryName(folder)
Else
Do
If Directory.GetDirectoryRoot(folder) = folder OrElse Directory.Exists(folder) Then
Exit Do
End If
folder = Path.GetDirectoryName(folder)
Loop
End If
End If
Catch
folder = ""
End Try
Return folder
End Function