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.6 Bitte warten Sie ...  toptop

Dieses Beispiel habe ich an einigen Rechnern getestet: Bei manchen muss der Benutzer mehrere Sekunden warten, bis Excel geöffnet wird, die Daten eingetragen werden, die Datei gespeichert und Excel beendet wird. Nun kann es sein, dass einige ungeduldige Benutzer auf verschiedenen Knöpfen herumklicken oder vielleicht denken, dass das Programm abgestürzt ist, und es im Taskmanager beenden. Um dies zu verhindern, wird ein Label auf dem Formular eingefügt. Es trägt den Namen »lblHinweis«, sein Text ist leer. Bevor Excel geöffnet wird, wird es mit einem Text versehen:

Me.lblHinweis.Text = _
"Achtung: Datentransfer läuft, bitte warten Sie"

Am Ende des Programms wird das Label wieder zurückgesetzt:

Me.lblHinweis.Text = ""

Allerdings werden die Änderungen nicht angezeigt. Der Grund liegt darin, dass die Anzeige aktualisiert werden muss. Entweder wird das ganze Formular neu angezeigt:

Me.Refresh()

oder eleganter nur das Label:

Me.lblHinweis.Refresh()

Natürlich muss die Aktualisierung zweimal erfolgen.

Gleichzeitig könnte man den Mauszeiger in eine Sanduhr verwandeln. In den Eigenschaften des Formulars findet sich die Eigenschaft »Cursor«. Gibt man nach Me.Cursor eine öffnende Klammer ein, dann wird angezeigt, wo sich die verschiedenen Cursor-Typen befinden, beziehungsweise wie sie heißen. Und so kann zu Beginn eingegeben werden:

Me.Cursor() = System.Windows.Forms.Cursors.WaitCursor

oder einfach nur:

Me.Cursor() = Cursors.WaitCursor

weil die Klasse System.Windows.Forms importiert wurde. Ausgeschaltet wird der Cursor, indem folgende Eigenschaft gesetzt wird:

Me.Cursor() = Cursors.Default
Abbildung

Abbildung 5.14   Ein Hinweis zeigt, dass das Programm noch läuft.

Abbildung

Abbildung 5.15   Variante zwei – das Programm läuft.

Statt eines Labels kann auch eine Statuszeile verwendet werden: Wird sie auf das Formular gezogen, so platziert sie sich am unteren Rand des Formulars. Da beim Laden noch kein Text angezeigt werden soll, wird die Eigenschaft »Text« geleert. Per Programmierung wird nun gesetzt:

Me.StatusBar1.Text = _
"Achtung: Datentransfer läuft, bitte warten Sie"

und ebenso am Ende ausgeschaltet:

Me.StatusBar1.Text = ""
Abbildung

Abbildung 5.16   Variante drei – das Programm läuft.

Ähnlich einfach zu erstellen und effektiv für den Anwender ist eine »ProgressBar«. Sie wird auf dem Formular an die Stelle gezogen, wo sie später erscheinen soll (in der Regel am unteren Rand). Die beiden wichtigsten Eigenschaften lauten »Minimum« und »Maximum«. Da unser Programm etwa zwölf Schritte ausführt, wird das Minimum auf 0 gesetzt (der blaue Fortschrittsanzeiger ist zu Beginn noch nicht zu sehen) und das Maximum auf 15. Die Schrittweite (Step) beträgt 1, allerdings wird sie per Programmierung festgelegt. Der »Value«, das heißt der Wert beim Start, liegt bei 0. Da die Fortschrittsanzeige mehrmals aktiviert wird, wird sie in einer Prozedur ausgelagert:

Private Sub Weiter()
   If Me.ProgressBar1.Value < 15 Then
      Me.ProgressBar1.Value += 1
   End If

Diese Routine wird nun nach jedem Befehl aufgerufen:

Call Weiter()
Abbildung

Abbildung 5.17   Variante vier – das Programm läuft.

Natürlich könnte man die ProgressBar auch mit einem Timer automatisch weiterlaufen lassen – das Problem ist nur, dass schlecht abgeschätzt werden kann, wie lange das Speichern der Daten dauert.

  

VB.NET

Einstieg in ASP.NET

Einstieg in C#

Visual C#

VB.NET und Datenbanken

Einstieg in XML