2.3 Einfache Steuerelemente
Windows-Programmierung mit Visual Basic besteht aus zwei Teilen: der Arbeit mit visuellen Steuerelementen und der Programmierung mit der Sprache. Beides soll in diesem Buch parallel vermittelt werden, damit die eher theoretischen Abschnitte zur Programmiersprache durch eine anschauliche Praxis vertieft werden können.
Daher wird in diesem Abschnitt mit vier weiteren Steuerelementen gearbeitet, bevor im nächsten Abschnitt die Verzweigungen zur Programmsteuerung vorgestellt werden: Panel, Zeitgeber, Textfeld und Zahlenauswahlfeld.
2.3.1 Panel

Ein Panel dient normalerweise als Container für andere Steuerelemente. In diesem Abschnitt wird es zur visuellen Darstellung eines Rechtecks und für eine kleine Animation genutzt.
Die Eigenschaften BackColor (Hintergrundfarbe), Location (Position) und Size (Größe) sind schon von anderen Steuerelementen bekannt.
Mithilfe des nachfolgenden Programms im Projekt Panel wird ein Panel durch Betätigung von vier Buttons um 10 Pixel nach oben, unten, links oder rechts verschoben. Es hat die Größe 100 × 100 Pixel, die Startposition X=145 und Y=80 sowie eine eigene Hintergrundfarbe. Die Bewegung wird mithilfe der Struktur Point durchgeführt.
In den Abbildungen 2.11 und 2.12 ist das Panel im Startzustand bzw. nach einigen Klicks zu sehen.
Abbildung 2.11 Panel, Startzustand
Abbildung 2.12 Panel, nach Verschiebung
Der Programmcode:
Public Class Form1
Private Sub cmdOben_Click(...) Handles ...
panMove.Location = New Point(
panMove.Location.X,
panMove.Location.Y – 10)
End Sub
Private Sub cmdUnten_Click(...) Handles ...
panMove.Location = New Point(
panMove.Location.X,
panMove.Location.Y + 10)
End Sub
Private Sub cmdLinks_Click(...) Handles ...
panMove.Location = New Point(
panMove.Location.X – 10,
panMove.Location.Y)
End Sub
Private Sub cmdRechts_Click(...) Handles ...
panMove.Location = New Point(
panMove.Location.X + 10,
panMove.Location.Y)
End Sub
End Class
Listing 2.6 Projekt »Panel«
2.3.2 Zeitgeber

Ein Zeitgeber (Timer) erzeugt in festgelegten Abständen Zeittakte. Diese Zeittakte sind Ereignisse, die Sie als Entwickler mit Aktionen verbinden können. Das zugehörige Ereignis heißt Tick. Ein Zeitgeber kann wie jedes andere Steuerelement zum Formular hinzugefügt werden. Da es sich aber um ein nicht sichtbares Steuerelement handelt, wird er unterhalb des Formulars angezeigt. Auch zur Laufzeit ist er nicht sichtbar.
Seine wichtigste Eigenschaft ist das Zeitintervall, in dem das Ereignis auftreten soll. Dieses Zeitintervall wird in Millisekunden angegeben.
Die Eigenschaft Enabled dient zur Aktivierung bzw. Deaktivierung des Zeitgebers. Sie kann zur Entwicklungszeit oder zur Laufzeit auf True oder False gestellt werden.
Im nachfolgenden Programm im Projekt Zeitgeber erscheint zunächst ein Formular mit zwei Buttons. Betätigt man den Start-Button, so erscheint ein x in einem Bezeichnungsfeld. Alle 0,5 Sekunden erscheint automatisch ein weiteres x, siehe Abbildung 2.13. Dies wird durch den Timer gesteuert, bei dem der Wert für die Eigenschaft Interval auf 500 gesetzt wurde. Nach Betätigung des Stop-Buttons kommt kein weiteres x hinzu.
Abbildung 2.13 Nach einigen Sekunden
Der zugehörige Code:
Public Class Form1
Private Sub timAnzeige_Tick(...
) Handles timAnzeige.Tick
lblAnzeige.Text &= "x"
End Sub
Private Sub cmdStart_Click(...) Handles ...
timAnzeige.Enabled = True
End Sub
Private Sub cmdStop_Click(...) Handles ...
timAnzeige.Enabled = False
End Sub
End Class
Listing 2.7 Projekt »Zeitgeber«
Übung
Erstellen Sie eine Windows-Anwendung. In der Mitte eines Formulars sollen zu Beginn vier Panels verschiedener Farbe der Größe 20 × 20 Pixel platziert werden, siehe Abbildung 2.14. Sobald ein Start-Button betätigt wurde, sollen diese vier Panels sich diagonal in ca. 5–10 Sekunden zu den Ecken des Formulars bewegen, jedes Panel in eine andere Ecke, siehe Abbildung 2.15.
Abbildung 2.14 Startzustand
Abbildung 2.15 Nach einigen Sekunden
Übung
Diese Übung gehört nicht zum Pflichtprogramm. Sie ist etwas umfangreicher, verdeutlicht aber die Möglichkeiten einer schnellen Visualisierung von Prozessen durch Visual Basic mit wenigen Programmzeilen.
Konstruieren Sie aus mehreren Panels einen Kran (Fundament, senkrechtes Hauptelement, waagerechter Ausleger, senkrechter Haken am Ausleger). Der Benutzer soll die Möglichkeit haben, über ingesamt acht Buttons die folgenden Aktionen auszulösen:
- Haken um 10 Pixel ausfahren bzw. einfahren
- Ausleger um 10 Pixel ausfahren bzw. einfahren
- Kran um 10 Pixel nach rechts bzw. links fahren
- Kran um 10 Pixel in der Höhe ausfahren bzw. einfahren
Denken Sie daran, dass bei vielen Bewegungen mehrere Steuerelemente bewegt werden müssen, da der Kran sonst seinen Zusammenhalt verliert. Manche Aktionen resultieren nur aus Größenveränderungen (Eigenschaften Width und Height), manche nur aus Ortsveränderungen (Location), manche aus beidem. In Abbildung 2.16 und Abbildung 2.17 sehen Sie den Kran im Startzustand bzw. nach einigen Klicks.
Es können natürlich immer noch widersprüchliche Bewegungen auftreten. Mit weiter zunehmendem Programmierwissen können Sie diesen Problemen später noch abhelfen.
Abbildung 2.16 Startzustand
Abbildung 2.17 Nach einigen Aktionen
2.3.3 Textfelder

Ein Textfeld dient in erster Linie dazu, die Eingabe von Text oder Zahlen vom Benutzer entgegenzunehmen. Diese Eingaben werden in der Eigenschaft Text des Textfelds gespeichert. Das Aussehen und das Verhalten eines Textfelds werden unter anderem durch folgende Eigenschaften gekennzeichnet:
- MultiLine: Steht MultiLine auf True, so kann bei der Eingabe und bei der Anzeige mit mehreren Textzeilen gearbeitet werden.
- ScrollBars: Man kann ein Textfeld mit vertikalen und/oder horizontalen Bildlaufleisten zur Eingabe und Anzeige längerer Texte versehen.
- MaxLength: Mit dieser Eigenschaft lässt sich die Anzahl der Zeichen des Textfelds beschränken. Ist keine Beschränkung vorgesehen, kann das Textfeld 32K Zeichen aufnehmen.
- PasswordChar: Falls für diese Eigenschaft im Entwurfsmodus ein Platzhalter-Zeichen eingegeben wurde, wird während der Laufzeit für jedes eingegebene Zeichen nur dieser Platzhalter angezeigt. Diese Eigenschaft wird vor allem bei Passwort-Abfragen verwendet.
Der Inhalt eines Textfelds kann mit den gewohnten Mitteln (zum Beispiel +
und
+
) in die Zwischenablage kopiert bzw. aus der Zwischenablage eingefügt werden.
Im nachfolgenden Programm im Projekt Textfelder kann der Benutzer in einem Textfeld einen Text eingeben. Nach Betätigung des Buttons Ausgabe wird der eingegebene Text in einem zusammenhängenden Satz ausgegeben, siehe Abbildung 2.18.
Abbildung 2.18 Eingabe in Textfeld
Der Code lautet wie folgt:
Public Class Form1
Private Sub cmdAusgabe_Click(...) Handles ...
lblAusgabe.Text = "Sie haben '" &
txtEingabe.Text & "' eingegeben"
End Sub
End Class
Listing 2.8 Projekt »Textfelder«
Zur Erläuterung:
- In der Eigenschaft Text des Textfelds wird die Eingabe gespeichert. Die Eigenschaft wird in einen längeren Ausgabetext eingebettet.
Bei der Eingabe und Auswertung von Zahlen sind einige Besonderheiten zu beachten. Im nachfolgenden Programm, ebenfalls im Projekt Textfelder, kann der Benutzer in einem Textfeld eine Zahl eingeben. Nach Betätigung des Buttons Rechnen wird der Wert dieser Zahl verdoppelt, das Ergebnis wird in einem Label darunter ausgegeben.
Public Class Form1
[...]
Private Sub cmdRechnen1_Click(...) Handles ...
lblAusgabe.Text = txtEingabe.Text * 2
End Sub
End Class
Listing 2.9 Projekt »Textfelder«, Zahleneingabe
Zur Erläuterung:
- Wenn eine Zeichenkette eingegeben wurde, die eine Zahl darstellt, dann wird sie implizit, d. h. automatisch, in eine Zahl umgewandelt, mit der dann gerechnet werden kann.
- Stellt die eingegebene Zeichenkette keine Zahl dar, kommt es zu einem Laufzeitfehler.
Diese Situation sollten Sie natürlich vermeiden:
- Sie können vorher überprüfen, ob es sich bei der Zeichenkette um eine gültige Zahl handelt und entsprechend reagieren. Dies wird möglich, sobald Sie Verzweigungen zur Programmsteuerung beherrschen.
- Allgemein können Sie Programme so schreiben, dass ein Programmabbruch abgefangen werden kann. Dies wird möglich, sobald Sie die Ausnahmebehandlung (siehe hierzu Kapitel 3, »Fehlerbehandlung«) beherrschen.
Einige Beispiele:
Abbildung 2.19 zeigt die Eingabe einer Zahl mit Nachkommastellen.
Abbildung 2.19 Eingabe einer Zahl mit Nachkommastellen
Die Eingabe einer Zeichenkette, z. B. abc, führt zur Anzeige einer nicht behandelten Ausnahme. Die Zeile, in der der Fehler auftritt, wird im Code markiert, damit der Fehler beseitigt werden kann (siehe Abbildung 2.20).
Abbildung 2.20 Markierung der Fehlerzeile
Es wird ein zusätzliches Dialogfeld angezeigt. Darin kann man den Button Weiter betätigen, dann wird das Programm beendet. Falls man den Button Unterbrechen betätigt, wird das Programm unterbrochen und muss anschließend über den Menüpunkt Debuggen • Debugging beenden beendet werden, bevor es neu gestartet werden kann.
Die Eingabe einer Zahl, bei der ein Punkt statt einem Komma zur Abtrennung von Nachkommastellen eingegeben wird, führt zu einem ganz anderen Rechenergebnis, siehe Abbildung 2.21. Der Punkt wird ignoriert, die Zahl wird als 352 angesehen und führt so zu dem Ergebnis 704.
Abbildung 2.21 Punkt vor den Nachkommastellen
Sie sollten dafür sorgen, dass der Inhalt des Textfeldes explizit in eine Zahl (mit möglichen Nachkommastellen) umgewandelt wird. Dies erreichen Sie mithilfe der Methode ToDouble() aus der Klasse Convert. Die Klasse Convert bietet eine Reihe von Methoden für die Umwandlung (= Konvertierung) in andere Datentypen.
Public Class Form1
[...]
Private Sub cmdRechnen2_Click(...) Handles ...
lblAusgabe.Text =
Convert.ToDouble(txtEingabe.Text) * 2
End Sub
End Class
Listing 2.10 Projekt »Textfelder«, Methode ToDouble()
Zur Erläuterung:
- Der eingegebene Text wird mit der Methode ToDouble() in eine Zahl umgewandelt.
- Allerdings ist nach wie vor ein Programmabbruch bei falscher Eingabe möglich.
2.3.4 Zahlenauswahlfeld
Das Steuerelement Zahlenauswahlfeld (NumericUpDown) bietet eine andere Möglichkeit, Zahlenwerte an ein Programm zu übermitteln. Die Zahlenwerte können innerhalb selbst gewählter Grenzen und in selbst definierten Schritten über zwei kleine Pfeiltasten ausgewählt werden.
Wichtige Eigenschaften des Steuerelements sind:
- Value: bezeichnet zur Entwicklungszeit den Startwert und zur Laufzeit den vom Benutzer aktuell eingestellten Wert.
- Maximum, Minimum: bestimmen den größtmöglichen Wert und den kleinstmöglichen Wert der Eigenschaft Value. Es handelt sich also um die Werte, die durch die Auswahl mit den Pfeiltasten ganz oben und ganz unten erreicht werden können.
- Increment: Mit Increment wird die Schrittweite eingestellt, mit der sich der Wert (Eigenschaft Value) ändert, wenn der Benutzer eine der kleinen Pfeiltasten betätigt.
- DecimalPlaces: bestimmt die Anzahl der Nachkommastellen in der Anzeige des Zahlenauswahlfelds.
Das wichtigste Ereignis dieses Steuerelements ist ValueChanged. Es tritt bei der Veränderung der Eigenschaft Value ein und sollte anschließend zur Programmsteuerung verwendet werden.
Im nachfolgenden Programm im Projekt Zahlenauswahlfeld werden alle diese Eigenschaften und das genannte Ereignis genutzt. Der Benutzer kann Zahlenwerte zwischen –5,0 und +5,0 in Schritten von 0,1 über ein Zahlenauswahlfeld einstellen. Der ausgewählte Wert wird unmittelbar in einem Label angezeigt, siehe Abbildung 2.22.
Abbildung 2.22 Zahlenauswahlfeld
Die Eigenschaften wurden zur Entwicklungszeit wie folgt eingestellt:
- Value: Wert 2, die Anwendung startet also bei dem Wert 2,0 für das Zahlenauswahlfeld
- Maximum, Minimum: Werte –5 und +5
- Increment: Wert 0,1
- DecimalPlaces: Wert 1, zur Anzeige einer einzelnen Nachkommastelle
Der Code lautet:
Public Class Form1
Private Sub numEingabe_ValueChanged(...
) Handles numEingabe.ValueChanged
lblAusgabe.Text = numEingabe.Value
End Sub
End Class
Listing 2.11 Projekt »Zahlenauswahlfeld«
Ihre Meinung
Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.