VB.NET FolderBrowserDialog – Ordner auswählen (2026)
Der VB.NET FolderBrowserDialog lässt den Benutzer einen Ordner aus dem Dateisystem auswählen, bevor deine Anwendung dessen Inhalte verarbeitet. Er zeigt den Standard-Windows-Ordnerdialog an, gibt den gewählten Pfad zurück und kann den sichtbaren Bereich optional einschränken. Dieser Guide behandelt Einrichtung, Stammordner-Konfiguration, Ordnererstellung, Batch-Verarbeitung und häufige Fehler.
Inhaltsverzeichnis
- 1 Was ist der FolderBrowserDialog?
- 2 Einfaches Beispiel
- 3 Stammordner einschränken
- 4 Ordner vorauswählen
- 5 Neuer-Ordner-Button ausblenden
- 6 Komplettes Beispiel: Dateien im Batch verarbeiten
- 7 Unterordner einbeziehen
- 8 Environment.SpecialFolder verwenden
- 9 Alle wichtigen Eigenschaften im Überblick
- 10 Häufige Fehler
- 11 FAQ
- 12 Fazit
Was ist der FolderBrowserDialog?
Der FolderBrowserDialog ist ein WinForms-Control aus System.Windows.Forms. Beim Aufruf von ShowDialog() öffnet sich der Windows-Ordnerdialog. Der Benutzer navigiert durch den Ordnerbaum, wählt einen Ordner aus und klickt OK. Dein Code erhält dann den vollständigen Ordnerpfad über die Eigenschaft SelectedPath.
Verwende ihn, wenn:
- Der Benutzer einen Ausgabeordner für Exporte, Backups oder Berichte wählen soll
- Deine Anwendung alle Dateien eines Verzeichnisses verarbeiten muss
- Der Benutzer ein Installations- oder Arbeitsverzeichnis auswählen soll
- Der Benutzer einen neuen Ordner anlegen können soll
Falls der Benutzer stattdessen eine einzelne Datei auswählen soll, verwende den OpenFileDialog. Zum Speichern einer Datei an einem bestimmten Ort verwende den SaveFileDialog.
Einfaches Beispiel
Der einfachste FolderBrowserDialog, der den gewählten Pfad anzeigt:
Using dlg As New FolderBrowserDialog()
dlg.Description = "Ordner auswählen"
If dlg.ShowDialog() = DialogResult.OK Then
MessageBox.Show($"Gewählt: {dlg.SelectedPath}")
End If
End Using
Der Using-Block gibt den Dialog nach der Verwendung frei. ShowDialog() gibt DialogResult.OK zurück, wenn der Benutzer bestätigt, oder DialogResult.Cancel, wenn er den Dialog schließt. Prüfe immer das Ergebnis, bevor du den Pfad verwendest.
Stammordner einschränken
Die RootFolder-Eigenschaft legt fest, welcher Knotenpunkt als oberste Ebene im Dialog angezeigt wird. Sie akzeptiert Werte aus Environment.SpecialFolder:
Using dlg As New FolderBrowserDialog()
' Nur Ordner innerhalb des Desktops anzeigen
dlg.RootFolder = Environment.SpecialFolder.Desktop
dlg.Description = "Projektordner auswählen"
If dlg.ShowDialog() = DialogResult.OK Then
Dim folder As String = dlg.SelectedPath
End If
End Using
Gängige Werte für RootFolder:
Environment.SpecialFolder.Desktop(Standard) zeigt den kompletten Baum ab dem DesktopEnvironment.SpecialFolder.MyComputerzeigt alle LaufwerkeEnvironment.SpecialFolder.MyDocumentsbeschränkt das Browsen auf den Dokumente-Ordner
Ordner vorauswählen
Verwende SelectedPath, um beim Öffnen des Dialogs einen Ordner vorzuwählen. Das ist nützlich, wenn der Benutzer zuvor bereits einen Ordner gewählt hat und du dir den merken willst:
Using dlg As New FolderBrowserDialog()
dlg.Description = "Exportordner auswählen"
dlg.SelectedPath = "C:\Users\Public\Documents"
If dlg.ShowDialog() = DialogResult.OK Then
Dim exportFolder As String = dlg.SelectedPath
End If
End Using
Der Dialog öffnet sich mit diesem Ordner bereits markiert. Falls der Pfad nicht existiert, springt der Dialog zum Stammordner zurück.
Neuer-Ordner-Button ausblenden
Standardmäßig enthält der Dialog einen „Neuen Ordner erstellen“-Button. Wenn der Benutzer nur einen existierenden Ordner auswählen soll, deaktiviere ihn:
Using dlg As New FolderBrowserDialog()
dlg.Description = "Vorhandenen Ordner auswählen"
dlg.ShowNewFolderButton = False
If dlg.ShowDialog() = DialogResult.OK Then
Dim folder As String = dlg.SelectedPath
End If
End Using
Setze ShowNewFolderButton = False für reine Leseoperationen wie den Import von Dateien. Lass ihn auf True (Standard), wenn der Benutzer eventuell einen Zielordner für Exporte anlegen muss.
Komplettes Beispiel: Dateien im Batch verarbeiten
Ein realistisches Beispiel, das den Benutzer einen Ordner auswählen lässt und dann alle Textdateien darin verarbeitet:
Imports System.IO
Imports System.Text
Private Sub BtnImportieren_Click(sender As Object, e As EventArgs) Handles BtnImportieren.Click
Using dlg As New FolderBrowserDialog()
dlg.Description = "Ordner mit Textdateien auswählen"
dlg.ShowNewFolderButton = False
If dlg.ShowDialog() = DialogResult.OK Then
Dim files() As String = Directory.GetFiles(
dlg.SelectedPath, "*.txt")
For Each filePath In files
Dim content As String = File.ReadAllText(
filePath, Encoding.UTF8)
' Jede Datei verarbeiten...
Next
MessageBox.Show($"{files.Length} Dateien verarbeitet.")
End If
End Using
End Sub
Directory.GetFiles() gibt alle passenden Dateien im gewählten Ordner zurück. Verwende den zweiten Parameter für Muster, z.B. "*.csv" oder "*.xml". Mehr zum Lesen von Textdateien findest du im VB.NET Textdatei einlesen Guide.
Unterordner einbeziehen
Um Dateien rekursiv zu verarbeiten, füge SearchOption.AllDirectories hinzu:
If dlg.ShowDialog() = DialogResult.OK Then
Dim files() As String = Directory.GetFiles(
dlg.SelectedPath, "*.txt", SearchOption.AllDirectories)
For Each filePath In files
Dim relativePath As String = filePath.Replace(
dlg.SelectedPath & "\", "")
' Datei mit relativem Pfad verarbeiten...
Next
End If
Das durchsucht den gewählten Ordner und alle seine Unterordner. Sei vorsichtig bei großen Verzeichnisbäumen, da dies bei Tausenden von Dateien eine Weile dauern kann.
Environment.SpecialFolder verwenden
Du kannst den Dialog mit Environment.GetFolderPath() kombinieren, um gängige Systemordner vorzuwählen. Du kannst auch den Anwendungspfad als Startpunkt verwenden:
' In Dokumente starten
Using dlg As New FolderBrowserDialog()
dlg.SelectedPath = Environment.GetFolderPath(
Environment.SpecialFolder.MyDocuments)
If dlg.ShowDialog() = DialogResult.OK Then
' dlg.SelectedPath verwenden...
End If
End Using
' Im Anwendungsverzeichnis starten
Using dlg As New FolderBrowserDialog()
dlg.SelectedPath = Application.StartupPath
If dlg.ShowDialog() = DialogResult.OK Then
' dlg.SelectedPath verwenden...
End If
End Using
Alle wichtigen Eigenschaften im Überblick
| Eigenschaft | Standard | Zweck |
|---|---|---|
Description | (leer) | Text über dem Ordnerbaum |
SelectedPath | (leer) | Vorgewählter / gewählter Ordner nach dem Dialog |
RootFolder | Desktop | Oberstes Element im Ordnerbaum |
ShowNewFolderButton | True | „Neuen Ordner erstellen“-Button ein- oder ausblenden |
Der FolderBrowserDialog hat weniger Eigenschaften als der OpenFileDialog, weil er nur Ordner und keine Dateien behandelt. Es gibt keine Filter– oder Multiselect-Eigenschaft.
Häufige Fehler
Pfad verwenden ohne DialogResult zu prüfen
' SCHLECHT - SelectedPath ist leer, wenn der Benutzer abbricht
dlg.ShowDialog()
Dim files = Directory.GetFiles(dlg.SelectedPath)
' GUT - Ergebnis zuerst prüfen
If dlg.ShowDialog() = DialogResult.OK Then
Dim files = Directory.GetFiles(dlg.SelectedPath)
End If
RootFolder und SelectedPath verwechseln
RootFolder schränkt ein, welche Ordner der Benutzer sehen kann. SelectedPath wählt einen Ordner innerhalb des sichtbaren Baums vor. Wenn du RootFolder = MyDocuments setzt, kann der Benutzer nicht aus den Dokumenten herausnavigieren. Wenn du nur einen Startpunkt vorschlagen, aber volle Navigation erlauben willst, verwende stattdessen SelectedPath.
Using-Block vergessen
Wie alle WinForms-Dialoge hält der FolderBrowserDialog unverwaltete Ressourcen. Ohne Using bleiben diese Ressourcen im Speicher, bis der Garbage Collector läuft. Wickle ihn immer in einen Using-Block ein.
FAQ
Erstelle einen New FolderBrowserDialog() in einem Using-Block, setze optional Description und rufe ShowDialog() auf. Prüfe, ob das Ergebnis DialogResult.OK ist, bevor du dlg.SelectedPath verwendest.
Setze dlg.SelectedPath auf den gewünschten Ordnerpfad, bevor du ShowDialog() aufrufst. Der Dialog öffnet sich mit diesem Ordner markiert. Verwechsle das nicht mit RootFolder, das den sichtbaren Baum einschränkt.
Ja. Setze dlg.ShowNewFolderButton = False vor dem Aufruf von ShowDialog(). Das ist nützlich für reine Leseoperationen, bei denen der Benutzer nur einen bestehenden Ordner auswählen soll.
RootFolder begrenzt das oberste Element, das der Benutzer durchsuchen kann, und schränkt die Navigation ein. SelectedPath wählt einen Ordner innerhalb des sichtbaren Baums vor, ohne die Navigation einzuschränken. Verwende SelectedPath, wenn du einen Startpunkt willst, aber vollen Zugriff erlauben möchtest.
Nein. Der eingebaute FolderBrowserDialog unterstützt nur die Auswahl eines einzelnen Ordners. Für die Auswahl mehrerer Ordner müsstest du den Dialog mehrfach aufrufen oder eine eigene Lösung implementieren.
Fazit
Der FolderBrowserDialog gibt deiner VB.NET-Anwendung einen nativen Ordnerdialog mit minimalem Code. Setze SelectedPath um einen Startordner vorzuschlagen, verwende RootFolder um die Navigation einzuschränken, und blende den Neuer-Ordner-Button mit ShowNewFolderButton = False aus, wenn der Benutzer nur existierende Ordner wählen soll. Nach dem Dialog kombiniere SelectedPath mit Directory.GetFiles() um den Ordnerinhalt zu verarbeiten. Für die Auswahl einzelner Dateien verwende den OpenFileDialog. Zum Speichern von Dateien siehe den SaveFileDialog.