Galileo Computing < openbook >
Galileo Computing - Bücher zur Programmierung und Softwareentwicklung
Galileo Computing - Bücher zur Programmierung und Softwareentwicklung

...powered by haas.homelinux.net...

Einstieg in VB.NET von René Martin
- Für Programmiereinsteiger -
Einstieg in VB.NET
gp Kapitel 5 Dateizugriff
  gp 5.1 Prüfen, ob eine Datei vorhanden ist
  gp 5.2 Textdateien lesen und schreiben
  gp 5.3 Der OpenFileDialog
  gp 5.4 DriveListBox, DirListBox und FileListBox
  gp 5.5 Fehler
  gp 5.6 Bitte warten Sie ...
  gp 5.7 Zusammenfassung


Galileo Computing

5.3 Der OpenFileDialog  toptop

Dafür steht ein weiteres Steuerelement in der Toolbox am unteren Ende zur Verfügung: der »OpenFileDialog«. Er wird auf das Formular gezogen, wo er sich zunächst am unteren Rand platziert. Er trägt den Namen »OpenFileDialog1«. Er wird mit dem Befehl

OpenFileDialog.ShowDialog()

geöffnet. Der Start funktioniert – allerdings ist das Resultat nicht ganz das gewünschte (siehe Abbildung 5.3).

Abbildung

Abbildung 5.3   Der OpenFileDialog

Der Dialog zeigt irgendeinen Ordner und listet alle Dateien auf, ohne dass eine Vorauswahl getroffen werden kann. Dies kann durch Voreinstellen bestimmter Eigenschaften abgefangen werden:

With OpenFileDialog1
   .Filter = _
   "Excel-Mappen (*.xls)|*.xls|Alle Dateien (*.*)|*.*"
   .FilterIndex = 1
   .InitialDirectory = "D:\Data"
   .Title = "Wir suchen eine Excel-Mappe"
   .ShowDialog()
End With
Abbildung

Abbildung 5.4   Der verbesserte OpenFileDialog

Dazu einige Erläuterungen. Natürlich hätte ich auch schreiben können:

OpenFileDialog1.Filter = _
"Excel-Mappen (*.xls)|*.xls|Alle Dateien (*.*)|*.*"
OpenFileDialog1.FilterIndex = 1
OpenFileDialog1.InitialDirectory = "D:\Data"
OpenFileDialog1.Title = "Wir suchen eine Excel-Mappe"
...

Um die Schreibarbeit zu sparen und nicht jedes Mal das Objekt »OpenFileDialog« zu wiederholen, wird es in eine Klammer eingespannt, die mit

With

beginnt und mit

End With 

endet.

Wird nun innerhalb der Klammer ein Punkt eingegeben, so »weiß« er, dass es sich auf das übergeordnete Objekt, das sich nach dem With befindet, beziehen muss. Am Anfang ist diese Schreibweise sicherlich gewöhnungsbedürftig, aber mit der Zeit erleichtert sie das Programmieren.

Zuerst wird die Eigenschaft »Filter« gesetzt. Sie besteht aus einer geraden Anzahl von Einträgen. Der erste Eintrag wird im Listenfeld gezeigt, während der zweite den eigentlichen Filter darstellt. Die Einträge werden durch das Pipe-Symbol (|) getrennt.

Damit der erste Eintrag vorab gewählt ist und schon in Kraft tritt, wird die Eigenschaft »FilterIndex« auf 1 gesetzt. Diese Eigenschaft ist überflüssig, da die Combobox sich den ersten Eintrag holen und ihn anzeigen würde.

Der Ordner, in dem er zu suchen beginnt, wird über die Eigenschaft »InitialDirectory« festgelegt. Sollte er nicht existieren, dann wählt »OpenFileDialog« einen anderen Ordner – er beginnt bei dem Ordner, in welchem das Programm installiert ist. Der »Title« ist Spielerei – gemeint ist die Beschriftung der Titelzeile.

Dann schließt sich die Frage an, wie abgefangen werden kann, was der Benutzer auswählt. Und: Ob er überhaupt etwas auswählt oder auf »Abbrechen« klickt. Dazu muss die letzte Zeile etwas modifiziert werden. Es wird nicht einfach nur der Dialog angezeigt (OpenFileDialog1.ShowDialog()), sondern es wird überprüft:

If .ShowDialog() = Windows.Forms.DialogResult.OK Then
   strDatei = .FileName

Übrigens: Da nach der Zeile

Public Class 

der Befehl folgt

Inherits System.Windows.Forms.Form

mit dem die Formular-Objektbibliothek eingebunden ist, genügt es, den Befehl

If .ShowDialog() = Windows.Forms.DialogResult.OK Then

zu verkürzen auf:

If .ShowDialog() = DialogResult.OK Then

Die Anweisung »DialogResult« kennt die zugehörige Objektbibliothek, sodass es nicht zu Konflikten kommt.

Allerdings soll der Benutzer so lange diesen Dialog sehen, bis er eine Datei auswählt. Dies könnte mit einer Schleife sichergestellt werden:

With OpenFileDialog1
   Do
      .Filter = _
      "Excel-Mappen (*.xls)|*.xls|Alle Dateien (*.*)|*.*"
      .FilterIndex = 1
      .InitialDirectory = "D:\Data"
      .Title = "Wir suchen eine Excel-Mappe"
   Loop Until .ShowDialog() = DialogResult.OK
End With

Nun hat der Benutzer eine Datei ausgewählt und auf »OK« geklickt. Übrigens: Wenn er nichts auswählt und auf die Schaltfläche »OK« klickt, dann bringt »OpenFileDialog« eine Fehlermeldung. Versucht der Benutzer diesen Dialog mit dem Schließen-Symbol (x) zu beenden, dann wird ebenso der Wert »DialogResult.Cancel« übergeben und er bleibt in der Schleife.

Die nun ausgewählte Datei wird in unser »info.txt« geschrieben:

     objDateiMacher = New StreamWriter(strWinVerz & "\" & _
     DATEINAME)
     objDateiMacher.Write(.FileName())
     objDateiMacher.Close()
     objDateiMacher = Nothing
     End With
   Else
...

Es folgt eine Liste der wichtigsten Methoden und Eigenschaften des Steuerelements »OpenFileDialog«:

Tabelle 5.5   Der OpenFileDialog
Methode Beschreibung
OpenFile öffnet die Datei
Reset setzt auf die Standardwerte zurück
ShowDialog zeigt den Dialog
ToString liefert das vom Benutzer ausgewählte Ergebnis

Tabelle 5.5   Der OpenFileDialog (Forts.)
Eigenschaft Beschreibung
AddExtension gibt der Benutzer keine Endung ein, dann wird automatisch eine angehängt
CheckFileExists überprüft, ob die Datei existiert
CheckPathExists überprüft, ob der Pfad existiert
DefaultExt Standard-Erweiterung
FileName der vom Benutzer ausgewählte Dateiname. Er kann auch vorbelegt werden.
FileNames die vom Benutzer ausgewählten Dateinamen
Filter in »Dateityp« angezeigte »Zeichenfolge«
FilterIndex der vom Benutzer ausgewählte Index des Filters. Er kann auch festgelegt werden.
InitialDirectory das Ausgangsverzeichnis
Multiselect erlaubt eine Mehrfachauswahl
RestoreDirectory das vom Benutzer zuletzt ausgewählte Verzeichnis wird wieder hergeholt
Title Titelzeile

Abbildung

Abbildung 5.5   Das Formular ruft ein zweites auf.

Und die Alternative? Natürlich könnte man mit dem SaveFileDialog eine neue Datei erzeugen lassen. Da in diesem Kapitel allerdings mehrere Varianten des Speicherns und der Dateiverwaltung über VB.NET angesprochen werden sollen, wird ein solcher Dialog selbst erstellt. Es wird ein neues Formular erzeugt (frmDatei), das wie folgt aufgerufen wird:

Else
   Dim frmForm As New frmDatei
   frmForm = New frmDatei()
   frmForm.Show()
End If
  

VB.NET

Einstieg in ASP.NET

Einstieg in C#

Visual C#

VB.NET und Datenbanken

Einstieg in XML