FolderBrowserDialog
Öffnet einen Dialog zur Auswahl eines Ordners.
Typischer Windows-"Ordner auswählen"-Dialog. Weil Menschen offenbar selbst beim Auswählen eines Verzeichnisses noch eine GUI brauchen und nicht einfach "C:\Irgendwas" eintippen können.
Konstruktor
$dialog = [System.Windows.Forms.FolderBrowserDialog]::new()
Eigenschaften
Description
Text oberhalb des Verzeichnisbaums.
$dialog.Description = "Wähle einen Zielordner aus"
SelectedPath
Der aktuell ausgewählte Ordnerpfad.
Kann:
-
vor dem Öffnen gesetzt werden → Startordner
-
nach dem Schließen ausgelesen werden → ausgewählter Ordner
$dialog.SelectedPath = "C:\Temp"
$dialog.SelectedPath
RootFolder
Legt fest, ab welchem Systemordner der Benutzer navigieren darf.
Verwendet Werte aus:
[System.Environment+SpecialFolder]
Beispiele:
-
Desktop -
MyComputer -
MyDocuments -
ProgramFiles
$dialog.RootFolder = [System.Environment+SpecialFolder]::Desktop
ShowNewFolderButton
Bestimmt, ob die Schaltfläche "Neuen Ordner erstellen" angezeigt wird.
$dialog.ShowNewFolderButton = $true
Methoden
ShowDialog()
Öffnet den Dialog.
Rückgabewert:
[System.Windows.Forms.DialogResult]
Meist:
-
OK -
Cancel
$result = $dialog.ShowDialog()
Dispose()
Gibt verwendete Ressourcen frei.
Technisch nicht immer zwingend nötig, aber sauberer. Besonders wenn man viele Dialoge erzeugt. Windows Forms sammelt sonst gerne kleinen Müll an wie ein Messie mit Kabelschublade.
$dialog.Dispose()
Einfaches Beispiel
Add-Type -AssemblyName System.Windows.Forms
$dialog = [System.Windows.Forms.FolderBrowserDialog]::new()
$dialog.Description = "Wähle einen Ordner"
$dialog.SelectedPath = "$env:USERPROFILE\Desktop"
$dialog.ShowNewFolderButton = $true
if ($dialog.ShowDialog() -eq "OK") {
$dialog.SelectedPath
}
$dialog.Dispose()
Typischer Ablauf
Dialog erstellen
↓
Eigenschaften setzen
↓
ShowDialog()
↓
DialogResult prüfen
↓
SelectedPath verwenden
↓
Dispose()
Wichtige Hinweise
SelectedPath setzt auch den Startordner
Viele denken:
"
RootFolderbestimmt den Startordner"
Nein.RootFolder begrenzt nur den sichtbaren Bereich.
Der tatsächliche Startordner kommt meistens von:
SelectedPath
Benutzer kann abbrechen
Darum niemals direkt:
$dialog.SelectedPath
verwenden ohne vorher:
ShowDialog()
zu prüfen.
Sonst arbeitest du eventuell mit leerem Inhalt weiter. Und plötzlich löscht ein Skript rekursiv "\". Kleine Eskalation. Riesige Wirkung.
Unterschied zu OpenFileDialog
| Dialog | Zweck |
|---|---|
FolderBrowserDialog |
Ordner auswählen |
OpenFileDialog |
Datei auswählen |
SaveFileDialog |
Speicherort + Dateiname auswählen |
Typische Verwendung
-
Installationspfad wählen
-
Backup-Ordner wählen
-
Exportpfad wählen
-
Scan-Verzeichnis wählen
-
Musik-/Bildordner auswählen
-
Benutzerfreundliche Pfadauswahl in GUIs
Minimalbeispiel
if ($dialog.ShowDialog() -eq "OK") {
$path = $dialog.SelectedPath
}
Das ist im Grunde der Kern von allem hier. Der Rest ist Komfort, Einschränkung oder kosmetische Kontrolle über das Windows-Chaos von 2003.