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.

.NET-Hilfe gesucht?

Du baust eine Desktop-Anwendung?

Ich entwickle seit über 17 Jahren professionell in VB.NET und C#. Von Ordnerdialogen bis zur kompletten WinForms-Anwendung kann ich helfen.

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 Desktop
  • Environment.SpecialFolder.MyComputer zeigt alle Laufwerke
  • Environment.SpecialFolder.MyDocuments beschrä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.

Projekt in Planung?

Brauchst du eine fertige WinForms-Anwendung?

Von Dateidialogen bis zur kompletten datengetriebenen Desktop-App: Ich entwerfe Software, die hält. Lass uns über dein Projekt sprechen.

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

EigenschaftStandardZweck
Description(leer)Text über dem Ordnerbaum
SelectedPath(leer)Vorgewählter / gewählter Ordner nach dem Dialog
RootFolderDesktopOberstes Element im Ordnerbaum
ShowNewFolderButtonTrue„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.

Interessiert?

Erfahrenen .NET-Entwickler gesucht?

Ich übernehme dein Projekt, von Dateioperationen bis zur fertigen Desktop-Anwendung. Schreib mir einfach eine Nachricht.

FAQ

Wie öffne ich einen FolderBrowserDialog in VB.NET?

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.

Wie setze ich den Standardordner im FolderBrowserDialog?

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.

Kann ich den Neuer-Ordner-Button ausblenden?

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.

Was ist der Unterschied zwischen RootFolder und SelectedPath?

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.

Kann der Benutzer mehrere Ordner auswählen?

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.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Robert Skibbe
Datenschutz-Übersicht

Diese Website verwendet Cookies, damit wir dir die bestmögliche Benutzererfahrung bieten können. Cookie-Informationen werden in deinem Browser gespeichert und führen Funktionen aus, wie das Wiedererkennen von dir, wenn du auf unsere Website zurückkehrst, und hilft unserem Team zu verstehen, welche Abschnitte der Website für dich am interessantesten und nützlichsten sind.