Windows Forms: Dialoge
Im .NET-Framework gibt es einige vorgefertigte Dialoge, um Dateien zu öffnen oder zu speichern, einen Ordner auszuwählen und viele mehr. Alle Dialoge können über die Funktion ShowDialog() aufgerufen und angezeigt werden. Dadurch ist es nicht möglich, zum vorherigen Fenster zurückzukehren, ohne den Dialog zu schließen. Die ShowDialog()-Funktion gibt einen Wert der Enumeration DialogResult zurück, mit welcher geprüft werden kann, ob der Dialog mit einem Klick auf „OK“ beendet wurde.
Der OpenFileDialog ist ein Dialog, mit welchem eine Datei zum Öffnen ausgewählt werden kann. Der Dialog zeigt ein standardisiertes Formular zum Auswählen einer Datei: links eine Navigation auf dem Computer, rechts die Dateiauswahl und unten ein Eingabefeld und Buttons. Über die Eigenschaft Multiselect wird angegeben, ob wir mehrere Dateien auswählen können oder nicht. Den resultierenden Dateinamen bzw. die resultierende Dateinamen können wir über die Eigenschaft FileName und FileNames abrufen. Die Eigenschaft Filter legt einen Auswahlfilter für Dateinamen fest. Dabei werden der Anzeige-Name und der Filter (z. B. *.txt für alle Dateinamen) von einem Senkrechtstrich getrennt. Natürlich können auch mehrere Filter genutzt werden. Die Trennung erfolgt auch hier mit einem Senkrechtstrich. Die Eigenschaft FilterIndex legt den gewählten Index fest oder gibt diesen zurück. Um einen Titel in der Fensterleiste anzuzeigen, können wir einen string in der Eigenschaft Title festlegen. Mit der Eigenschaft DefaultExt legen wir fest, welche Dateinamenserweiterung angefügt werden soll, wenn keine eingegeben wurde. Der SaveFileDialog ist das Gegenstück des OpenFileDialog. Hiermit wird ein Dialog zum Speichern einer Datei angezeigt. Die Eigenschaften sind so gut wie alle mit dem des OpenFileDialog vergleichbar. Zusätzlich verfügt der Dialog noch über die Eigenschaft OverwritePrompt, mit welcher festgelegt werden kann, ob geprüft werden soll, ob die Datei bereits existiert und dementsprechend eine Meldung angezeigt werden soll.
Der FolderBrowserDialog ist ein Dialog zum Auswahl eines Ordners. Die Eigenschaft ShowNewFolderButton legt fest, ob ein Button angezeigt werden soll, mit welchem ein neuer Ordner erstellt werden kann. Über die Eigenschaft RootFolder können wir das Stammverzeichnis auswählen. Hierfür benötigen wir die Enumeration SpecialFolder, welche viele Elemente enthält. Die gängigsten sind Desktop (physisches Verzeichnis, enthält alle Ordner des Computers), DesktopDirectory (logisches Verzeichnis, enthält alle auf dem Desktop befindende Ordner), Favorites (Favoriten-Verzeichnis), MyComputer (Arbeitsplatz) und MyDocuments (Eigene Dateien). Über die Eigenschaft SelectedPath können wir den vom Benutzer ausgewählten Ordner (mit Pfadangabe) abrufen.
Mit dem ColorDialog ist es möglich, den Benutzer aufzufordern, eine Farbe auszuwählen. Mit der Eigenschaft AllowFullOpen können wir unterbinden, dass der Dialog erweitert geöffnet werden kann, wodurch Farben mit Hilfe des RGB- und HSL-Farbmodells gemischt werden können. Über die Eigenschaft Color können wir die ausgewählte Farbe auswählen oder setzen. Die Color-Eigenschaft enthält ein Objekt der Klasse Color (System.Drawing Namensraum). Die Klasse (bzw. richtigerweise die Struktur) enthält zudem auch einige statische Objekte für die Auswahl einer Farbe (Red, Blue, Lime, …).
Der FontDialog ist ein Dialog zur Auswahl der Schriftfamilie, Schriftgröße und des Schriftstils (Fettdruck, Kursiv, Unterstrichen, Durchgestrichen). Die Schrifteinstellungen können über die Eigenschaft Font abgerufen oder gesetzt werden, welches ein Font-Objekt (System.Drawing Namensraum) enthält. Die einzelnen Bestandteile eines Font-Objekts können abgerufen, jedoch nicht zugewiesen werden. Zum Ändern einer einzelnen Font-Eigenschaft muss das komplette Objekt kopiert und dann über den Konstruktor der Font-Klasse geändert werden. Durch die Eigenschaft ShowColor können wir den Dialog um eine einfache Farbauswahl erweitern. Die dabei resultierende Farbe kann über die Eigenschaft Color abgerufen oder festgelegt werden.
Form1.cs
private void buttonÖffnen_Click(object sender, EventArgs e) { if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK) MessageBox.Show("Sie haben die folgende Datei gewählt:\n" + openFileDialog1.FileName); } private void buttonSpeichern_Click(object sender, EventArgs e) { if (saveFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK) MessageBox.Show("Sie haben die folgende Datei gewählt:\n" + saveFileDialog1.FileName); } private void buttonOrdnerWählen_Click(object sender, EventArgs e) { if (folderBrowserDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK) MessageBox.Show("Sie haben den folgenden Ordner gewählt:\n" + folderBrowserDialog1.SelectedPath); } private void buttonFarbeWählen_Click(object sender, EventArgs e) { // Farbe des Labels in den Dialog übernehmen colorDialog1.Color = labelTest.ForeColor; // Dialog anzeigen und gewählte Farbe ins Label übernehmen if (colorDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK) labelTest.ForeColor = colorDialog1.Color; } private void buttonFormatierungÄndern_Click(object sender, EventArgs e) { // Schriftformatierung des Labels in den Dialog übernehmen fontDialog1.Font = labelTest.Font; // Dialog anzeigen und gewählte Schriftformatierung ins Label übernehmen if (fontDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK) labelTest.Font = fontDialog1.Font; }