Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
1 Einführung
2 Grundlagen
3 Fehlerbehandlung
4 Erweiterte Grundlagen
5 Objektorientierte Programmierung
6 Wichtige Klassen in .NET
7 Weitere Elemente eines Windows-Programms
8 Datenbank-Anwendungen mit ADO.NET
9 Internet-Anwendungen mit ASP.NET
10 Zeichnen mit GDI+
11 Beispielprojekte
12 Windows Presentation Foundation
13 Windows Store-Apps für Windows 8
A Installation und technische Hinweise
B Lösungen der Übungsaufgaben
C Inhalt der Buch-DVD
D Der Autor
Stichwort

Jetzt Buch bestellen
Ihre Meinung?

Spacer
Einstieg in Visual Basic 2012 von Thomas Theis
Ideal für Programmiereinsteiger geeignet
Buch: Einstieg in Visual Basic 2012

Einstieg in Visual Basic 2012
Rheinwerk Computing
579 S., 3., aktualisierte und erweiterte Auflage 2013, brosch., mit DVD
24,90 Euro, ISBN 978-3-8362-1959-4
Pfeil 2 Grundlagen
Pfeil 2.1 Variablen und Datentypen
Pfeil 2.1.1 Namen und Werte
Pfeil 2.1.2 Deklarationen
Pfeil 2.1.3 Datentypen
Pfeil 2.1.4 Gültigkeitsbereich
Pfeil 2.1.5 Konstanten
Pfeil 2.1.6 Enumerationen
Pfeil 2.2 Operatoren
Pfeil 2.2.1 Rechenoperatoren
Pfeil 2.2.2 Vergleichsoperatoren
Pfeil 2.2.3 Logische Operatoren
Pfeil 2.2.4 Verkettungsoperator
Pfeil 2.2.5 Zuweisungsoperatoren
Pfeil 2.2.6 Rangfolge der Operatoren
Pfeil 2.3 Einfache Steuerelemente
Pfeil 2.3.1 Panel
Pfeil 2.3.2 Zeitgeber
Pfeil 2.3.3 Textfelder
Pfeil 2.3.4 Zahlenauswahlfeld
Pfeil 2.4 Verzweigungen
Pfeil 2.4.1 Einzeiliges If...Then...Else
Pfeil 2.4.2 If...Then...Else-Block
Pfeil 2.4.3 Select Case
Pfeil 2.4.4 Funktion IIf
Pfeil 2.4.5 Funktion Choose
Pfeil 2.4.6 Übungen
Pfeil 2.5 Verzweigungen und Steuerelemente
Pfeil 2.5.1 Kontrollkästchen
Pfeil 2.5.2 Optionsschaltfläche
Pfeil 2.5.3 Mehrere Ereignisse in einer Prozedur behandeln
Pfeil 2.5.4 Mehrere Gruppen von Optionsschaltflächen
Pfeil 2.5.5 Prozedur ohne Ereignis, Modularisierung
Pfeil 2.6 Schleifen
Pfeil 2.6.1 For ... Next
Pfeil 2.6.2 Do ... Loop
Pfeil 2.6.3 With
Pfeil 2.6.4 Übungen
Pfeil 2.7 Schleifen und Steuerelemente
Pfeil 2.7.1 Listenfeld
Pfeil 2.7.2 Listenfeld füllen
Pfeil 2.7.3 Wichtige Eigenschaften
Pfeil 2.7.4 Wechsel der Auswahl
Pfeil 2.7.5 Wichtige Methoden
Pfeil 2.7.6 Mehrfachauswahl
Pfeil 2.7.7 Kombinationsfelder

Rheinwerk Computing - Zum Seitenanfang

2.5 Verzweigungen und SteuerelementeZur nächsten Überschrift

In diesem Abschnitt werden Kontrollkästchen und Optionsschaltflächen bzw. Gruppen von Optionsschaltflächen eingeführt. Damit können Sie Zustände unterscheiden bzw. Eigenschaften einstellen. Dazu benötigen Sie Verzweigungen, die Gegenstand des vorherigen Abschnitts waren.


Rheinwerk Computing - Zum Seitenanfang

2.5.1 KontrollkästchenZur nächsten ÜberschriftZur vorigen Überschrift

Das Kontrollkästchen (CheckBox) bietet dem Benutzer die Möglichkeit, zwischen zwei Zuständen zu wählen, z. B. An oder Aus, wie bei einem Schalter. Sie können damit auch kennzeichnen, ob Sie eine bestimmte optionale Erweiterung wünschen oder nicht. Der Benutzer bedient ein Kontrollkästchen, indem er ein Häkchen setzt oder entfernt.

Das wichtigste Ereignis ist beim Kontrollkästchen nicht der Click, sondern das Ereignis CheckedChanged. Dieses Ereignis zeigt nicht nur an, dass das Kontrollkästchen vom Benutzer bedient wurde, sondern auch, dass es seinen Zustand geändert hat. Dies kann beispielsweise auch durch Programmcode geschehen. Eine Ereignisprozedur zu CheckedChanged löst in jedem Fall etwas aus, sobald das Kontrollkästchen (vom Benutzer oder vom Programmcode) geändert wurde.

Allerdings wird der Programmablauf meist so gestaltet, dass bei einem anderen Ereignis der aktuelle Zustand des Kontrollkästchens (An/Aus) abgefragt und anschließend entsprechend reagiert wird.

Die wichtigen Eigenschaften des Kontrollkästchens sind:

  • Checked – der Zustand der CheckBox, mit den Werten True und False
  • Text – die Beschriftung neben dem Kontrollkästchen

Im Projekt Kontrollkästchen werden alle oben genannten Möglichkeiten genutzt, siehe Abbildung 2.24.

Abbildung

Abbildung 2.24 Zustand nach Klick auf Kontrollkästchen

Der Programmcode:

Public Class Form1
Private Sub cmdPrüfen_Click(...) Handles ...
If chkSchalter.Checked Then
lblTest1.Text = "An"
Else
lblTest1.Text = "Aus"
End If
End Sub

Private Sub chkSchalter_CheckedChanged(...
) Handles chkSchalter.CheckedChanged
If chkSchalter.Checked Then
lblTest2.Text = "An"
Else
lblTest2.Text = "Aus"
End If
End Sub

Private Sub cmdUmschalten_Click(...) Handles ...
chkSchalter.Checked =
Not chkSchalter.Checked
End Sub
End Class

Listing 2.17 Projekt »Kontrollkästchen«

Zur Erläuterung:

  • Den Zustand eines Kontrollkästchens (Häkchen gesetzt oder nicht) können Sie im Programm mithilfe einer einfachen Verzweigung auswerten.
  • Normalerweise werden bei einer Bedingung in einer Verzweigung zwei Werte durch Vergleichsoperatoren miteinander verglichen und eines der beiden Ergebnisse True oder False ermittelt. Da die Eigenschaft Checked aber bereits einem solchen Wahrheitswert entspricht, kann die Bedingung auch verkürzt formuliert werden. If chkSchalter.Checked = True ... hätte also das gleiche Ergebnis erzeugt.
  • Die Prozedur cmdPrüfenClick() wird aufgerufen, wenn der Benutzer den Button Schalter prüfen betätigt. Erst in diesem Moment wird der Zustand des Kontrollkästchens (Eigenschaft Checked gleich True oder False) abgefragt und im ersten Label ausgegeben. Es kann also sein, dass das Kontrollkästchen vor längerer Zeit oder noch nie benutzt wurde.
  • Dagegen wird die Prozedur chkSchalter_CheckedChanged() sofort aufgerufen, wenn der Benutzer das Kontrollkästchen benutzt, also ein Häkchen setzt oder entfernt. Die Prozedur wird auch dann aufgerufen, wenn der Benutzer den Zustand des Kontrollkästchens durch Programmcode ändert. Hier wird der Zustand des Kontrollkästchens also unmittelbar nach der Änderung ausgegeben (im zweiten Label).
  • Die Prozedur cmdUmschalten_Click() dient zum Umschalten des Kontrollkästchen per Programmcode. Dies kommt in Windows-Anwendungen häufig vor, wenn es logische Zusammenhänge zwischen mehreren Steuerelementen gibt. Die Eigenschaft Checked wird mithilfe des logischen Operators Not auf True bzw. auf False gesetzt. Dies führt wiederum zum Ereignis chkSchalter_CheckedChanged und dem Ablauf der zugehörigen, oben erläuterten Ereignisprozedur.

Rheinwerk Computing - Zum Seitenanfang

2.5.2 OptionsschaltflächeZur nächsten ÜberschriftZur vorigen Überschrift

Optionsschaltflächen (RadioButtons) treten immer in Gruppen auf und bieten dem Benutzer die Möglichkeit, zwischen zwei oder mehr Möglichkeiten zu wählen, etwa zwischen den Farben Rot, Grün oder Blau. Bei zusammengehörigen Optionsschaltflächen kann der Benutzer genau eine per Klick auswählen. Alle anderen werden dann unmittelbar als Nicht ausgewählt gekennzeichnet.

Analog zum Kontrollkästchen ist das wichtigste Ereignis bei einer Optionsschaltfläche CheckedChanged. Dieses Ereignis zeigt an, dass die betreffende Optionsschaltfläche ihren Zustand geändert hat. Dies kann auch durch Programmcode geschehen.

Der Programmablauf wird hier meist so gestaltet, dass bei einem anderen Ereignis die aktuelle Auswahl innerhalb der Gruppe abgefragt wird und anschließend je nach Zustand unterschiedlich reagiert wird.

Es ist guter Programmierstil und verringert Folgefehler, wenn Sie eine der Optionsschaltflächen der Gruppe bereits zur Entwicklungszeit auf True setzen. Dies muss nicht notwendigerweise die erste Optionsschaltfläche der Gruppe sein.

Die wichtigen Eigenschaften der Optionsschaltflächen sind Checked (mit den Werten True und False) und Text (zur Beschriftung). Im nachfolgenden Programm im Projekt Optionen werden alle genannten Möglichkeiten genutzt. Es wird der Zustand angezeigt, nachdem der Benutzer

  • Blau gewählt,
  • den Button Prüfen betätigt,
  • Grün gewählt hat (siehe Abbildung 2.25).

Abbildung

Abbildung 2.25 Zustand nach den genannten Aktionen

Der Programmcode:

Public Class Form1
Private Sub cmdPrüfen_Click(...) Handles ...
If optFarbeRot.Checked Then
lblAnzeige1.Text = "Rot"
ElseIf optFarbeGrün.Checked Then
lblAnzeige1.Text = "Grün"
Else
lblAnzeige1.Text = "Blau"
End If
End Sub

Private Sub optFarbeRot_CheckedChanged(...
) Handles optFarbeRot.CheckedChanged
If optFarbeRot.Checked Then
lblAnzeige2.Text = "Rot"
End If
End Sub

Private Sub optFarbeGrün_CheckedChanged(...
) Handles optFarbeGrün.CheckedChanged
If optFarbeGrün.Checked Then
lblAnzeige2.Text = "Grün"
End If
End Sub

Private Sub optFarbeBlau_CheckedChanged(...
) Handles optFarbeBlau.CheckedChanged
If optFarbeBlau.Checked Then
lblAnzeige2.Text = "Blau"
End If
End Sub

Private Sub cmdSchalter_Click(...) Handles ...
optFarbeRot.Checked = True
End Sub
End Class

Listing 2.18 Projekt »Optionen«

Zur Erläuterung:

  • Den Zustand einer einzelnen Optionsschaltfläche können Sie im Programm mithilfe einer einfachen Verzweigung auswerten. Es muss festgestellt werden, ob diese Optionsschaltfläche ausgewählt oder abgewählt wurde. In beiden Fällen tritt das Ereignis CheckedChanged auf.
  • Den Zustand einer Gruppe von Optionsschaltflächen können Sie im Programm mithilfe einer mehrfachen Verzweigung auswerten.
  • Die Prozedur cmdPrüfen_Click() wird aufgerufen, wenn der Benutzer den Button Prüfen betätigt. Erst in diesem Moment wird der Zustand der Gruppe abgefragt und im ersten Label ausgegeben.
  • Dagegen wird eine der Prozeduren optFarbeRot_CheckedChanged() (bzw. ...Grün... oder ...Blau...) sofort aufgerufen, wenn der Benutzer eine der Optionsschaltflächen auswählt. Diese Prozeduren werden jeweils auch dann aufgerufen, wenn der Benutzer den Zustand der zugehörigen Optionsschaltfläche durch Programmcode ändert. Hier wird der Zustand der Gruppe also unmittelbar nach der Änderung ausgegeben (im zweiten Label).
  • Die Prozedur cmdSchalter_Click() dient zur Auswahl einer bestimmten Optionsschaltfläche per Programmcode. Dies kommt in Windows-Anwendungen häufig vor, wenn es logische Zusammenhänge zwischen mehreren Steuerelementen gibt. Die Eigenschaft Checked wird auf True gesetzt. Dies führt wiederum zum Ereignis CheckedChanged der jeweiligen Optionsschaltfläche und zum Ablauf der zugehörigen, oben erläuterten Ereignisprozedur.

Innerhalb eines Formulars oder einer GroupBox (siehe übernächster Abschnitt) kann immer nur bei einer Optionsschaltfläche die Eigenschaft Checked den Wert True haben. Sobald eine andere Optionsschaltfläche angeklickt wird, ändert sich der Wert der Eigenschaft bei der bisher gültigen Optionsschaltfläche.


Rheinwerk Computing - Zum Seitenanfang

2.5.3 Mehrere Ereignisse in einer Prozedur behandelnZur nächsten ÜberschriftZur vorigen Überschrift

Im folgenden Projekt MehrereEreignisse wird eine häufig verwendete Technik vorgestellt. Gibt es mehrere Ereignisse, die auf die gleiche oder auf ähnliche Weise behandelt werden sollen, ist es vorteilhaft, diese Ereignisse mit einer gemeinsamen Ereignisprozedur aufzurufen.

Dies ist möglich, da nach dem Schlüsselwort Handles zu Beginn der Ereignisprozedur mehrere Ereignisse genannt werden können. Im nachfolgenden Programm wird diese Technik verwendet, um den Zustand einer Gruppe von Optionsschaltflächen sofort anzuzeigen, wenn der Benutzer eine der Optionsschaltflächen auswählt, siehe Abbildung 2.26.

Abbildung

Abbildung 2.26 Mehrere Ereignisse in einer Prozedur

Der Programmcode:

Public Class Form1
Private Sub optFarbeRot_CheckedChanged(...
) Handles optFarbeRot.CheckedChanged,
optFarbeGrün.CheckedChanged,
optFarbeBlau.CheckedChanged
If optFarbeRot.Checked Then
lblAnzeige.Text = "Rot"
ElseIf optFarbeGrün.Checked Then
lblAnzeige.Text = "Grün"
Else
lblAnzeige.Text = "Blau"
End If
End Sub
End Class

Listing 2.19 Projekt »MehrereEreignisse«

Zur Erläuterung:

  • Die Prozedur optFarbeRot_CheckedChanged() wird durch alle drei CheckedChanged-Ereignisse aufgerufen.

Rheinwerk Computing - Zum Seitenanfang

2.5.4 Mehrere Gruppen von OptionsschaltflächenZur nächsten ÜberschriftZur vorigen Überschrift

Falls in den beiden letzten Programmen weitere Optionsschaltflächen hinzugefügt wurden, so gilt nach wie vor: Nur eine der Optionsschaltflächen ist ausgewählt.

Benötigen Sie aber innerhalb eines Formulars mehrere voneinander unabhängige Gruppen von Optionsschaltflächen, wobei in jeder der Gruppen jeweils nur eine Optionsschaltfläche ausgewählt sein soll, so müssen Sie jede Gruppe einzeln in einen Container setzen. Ein Formular ist bereits ein Container, wir benötigen also einen weiteren Container.

Als ein solcher Container kann beispielsweise das Steuerelement Gruppe (GroupBox) dienen. Mit der Zuweisung der Eigenschaft Text der GroupBox geben Sie eine Beschriftung an.

Falls eine GroupBox markiert ist, dann wird eine neu erzeugte Optionsschaltfläche dieser GroupBox zugeordet und reagiert gemeinsam mit den anderen Optionsschaltflächen in dieser GroupBox. Anderenfalls wird sie dem Formular zugeordnet und reagiert gemeinsam mit den anderen Optionsschaltflächen, die im Formular außerhalb von GroupBoxen stehen. Sie können eine bereits erzeugte Optionsschaltfläche auch im Nachhinein ausschneiden, das Ziel markieren und sie wieder einfügen, um die Zuordnung zu ändern.

Im Projekt Optionsgruppen werden zwei voneinander unabhängige Gruppen von Optionen verwendet, siehe Abbildung 2.27.

Abbildung

Abbildung 2.27 Zwei Gruppen von RadioButtons

Der zugehörige Code:

Public Class Form1
Dim AusgabeUrlaubsort As String
Dim AusgabeUnterkunft As String

Private Sub optBerlin_CheckedChanged(...
) Handles optBerlin.CheckedChanged,
optParis.CheckedChanged,
optRom.CheckedChanged
' Urlaubsort
If optBerlin.Checked Then
AusgabeUrlaubsort = "Berlin"
ElseIf optParis.Checked Then
AusgabeUrlaubsort = "Paris"
Else
AusgabeUrlaubsort = "Rom"
End If

lblAnzeige.Text = AusgabeUrlaubsort &
", " & AusgabeUnterkunft
End Sub
Private Sub optAppartement_CheckedChanged(...
) Handles optAppartement.CheckedChanged,
optPension.CheckedChanged,
optHotel.CheckedChanged
' Unterkunft
If optAppartement.Checked Then
AusgabeUnterkunft = "Appartement"
ElseIf optPension.Checked Then
AusgabeUnterkunft = "Pension"
Else
AusgabeUnterkunft = "Hotel"
End If
lblAnzeige.Text = AusgabeUrlaubsort &
", " & AusgabeUnterkunft
End Sub
End Class

Listing 2.20 Projekt »Optionsgruppen«

Zur Erläuterung:

  • Bei einer Urlaubsbuchung können Zielort und Art der Unterkunft unabhängig voneinander gewählt werden. Es gibt also zwei Gruppen von Optionsschaltflächen, jede in einer eigenen GroupBox.
  • Bei Auswahl einer der drei Optionsschaltflächen in einer Gruppe wird jeweils die gleiche Prozedur aufgerufen. In den Prozeduren wird den klassenweit gültigen Variablen AusgabeUrlaubsort bzw. AusgabeUnterkunft ein Wert zugewiesen. Anschließend werden die beiden Variablen ausgegeben.
  • Die Variablen mussten klassenweit gültig deklariert werden, damit sie in der jeweils anderen Prozedur zur Verfügung stehen.

Übung

Erweitern Sie die Übung ÜKranVerzweigung. Die Bewegung des Krans soll per Zeitgeber (Timer) gesteuert werden. Der Benutzer wählt zunächst über eine Gruppe von Optionsschaltflächen aus, welche Bewegung der Kran ausführen soll. Anschließend betätigt er den Start-Button, siehe Abbildung 2.28. Die Bewegung wird so lange ausgeführt, bis er den Stop-Button drückt oder eine Begrenzung erreicht wurde.

Abbildung

Abbildung 2.28 Übung ÜKranOptionen


Rheinwerk Computing - Zum Seitenanfang

2.5.5 Prozedur ohne Ereignis, ModularisierungZur vorigen Überschrift

Bisher wurden nur Prozeduren behandelt, die mit einem Ereignis zusammenhingen. Darüber hinaus können Sie aber auch unabhängige, allgemeine Prozeduren schreiben, die von anderen Stellen des Programms aus aufgerufen werden. Diese Prozeduren können Sie direkt im Codefenster eingeben.

Nachfolgend das Programm im Projekt ProzedurOhneEreignis, es handelt sich dabei um eine geänderte Version des Programms im Projekt Optionsgruppen:

Public Class Form1
Dim AusgabeUrlaubsort, AusgabeUnterkunft As String
[...]
Private Sub optUnterkunft_CheckedChanged(...
) Handles ...
' Unterkunft
If optAppartement.Checked Then
AusgabeUnterkunft = "Appartement"
ElseIf optPension.Checked Then
AusgabeUnterkunft = "Pension"
Else
AusgabeUnterkunft = "Hotel"
End If

Anzeigen()
End Sub

Private Sub Anzeigen()
lblAnzeige.Text = AusgabeUrlaubsort &
", " & AusgabeUnterkunft
End Sub
End Class

Listing 2.21 Projekt »ProzedurOhneEreignis«

Zur Erläuterung:

  • Abgebildet wird nur der zweite Teil der Klasse.
  • Am Ende der beiden Ereignisprozeduren optUnterkunft_ CheckedChanged() und optUrlaubsort_CheckedChanged() steht jeweils die Anweisung Anzeigen(). Dabei handelt es sich um einen Aufruf der Prozedur Anzeigen().
  • Diese Prozedur steht weiter unten. Sie ist nicht direkt an ein Ereignis gekoppelt.

Vorteil dieser Vorgehensweise: Gemeinsam genutzte Programmteile können ausgelagert werden und müssen nur einmal geschrieben werden. Man nennt diesen Vorgang bei der Programmierung auch Modularisierung. In Abschnitt 4.8 wird dieses Thema noch genauer behandelt.



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.

<< zurück
  Zum Rheinwerk-Shop
Zum Rheinwerk-Shop: Einstieg in Visual Basic 2012

Einstieg in Visual Basic 2012
Jetzt Buch bestellen


 Ihre Meinung?
Wie hat Ihnen das Openbook gefallen?
Ihre Meinung

 Buchempfehlungen
Zum Rheinwerk-Shop: Visual Basic 2012






 Visual Basic 2012


Zum Rheinwerk-Shop: Schrödinger programmiert C++






 Schrödinger
 programmiert C++


Zum Rheinwerk-Shop: IT-Handbuch für Fachinformatiker






 IT-Handbuch für
 Fachinformatiker


Zum Rheinwerk-Shop: Java ist auch eine Insel






 Java ist auch
 eine Insel


Zum Rheinwerk-Shop: Einstieg in Python






 Einstieg in Python


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
InfoInfo





Copyright © Rheinwerk Verlag GmbH 2013
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das Openbook denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.
Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern