einstieg in visual basic 2015 – ideal für ... · pdf fileleseprobe jeder kann...
TRANSCRIPT
LeseprobeJeder kann programmieren lernen! Thomas Theis führt Sie gekonnt in die Grundlagen von Visual Basic ein. Probieren Sie es gleich aus. Außerdem enthält diese Leseprobe die Lösung zu Kapitel 1 und 2, das Inhaltsverzeichnis und das gesamte Stichwortverzeichnis des Buches.
Thomas Theis
Einstieg in Visual Basic 2015 – Ideal für Programmiereinsteiger geeignet552 Seiten, broschiert, 5. Auflage 2015 29,90 Euro, ISBN 978-3-8362-3703-1
www.rheinwerk-verlag.de/3813
»Einführung«»Grundlagen«»Lösungen«
Inhaltsverzeichnis
Index
Der Autor
Leseprobe weiterempfehlen
Know-how für Kreative.Wissen, wie’s geht.
17
1Kapitel 1
Einführung
In diesem Kapitel erlernen Sie anhand eines ersten Projekts den Umgang
mit der Entwicklungsumgebung und den Steuerelementen. Sie sind an-
schließend in der Lage, Ihr erstes eigenes Windows-Programm zu erstellen.
Visual Basic 2015 ist der Nachfolger von Visual Basic 2013 und damit eine
weitere Version von Visual Basic .NET. Hierbei handelt es sich um eine
objektorientierte Programmiersprache. Mithilfe der Entwicklungsumge-
bung Visual Studio 2015 können Sie u. a. in Visual Basic programmieren.
1.1 Aufbau dieses Buchs
BeispieleDieses Buch vermittelt Ihnen zunächst einen einfachen Einstieg in die
Programmierung mit Visual Basic und dem Visual Studio 2015. Die Bear-
beitung der Beispiele und das selbständige Lösen der vorliegenden
Übungsaufgaben helfen dabei, da sie für schnelle Erfolgserlebnisse sorgen,
die Sie zum Weitermachen motivieren sollen. In späteren Kapiteln werden
auch die komplexen Themen vermittelt.
GrundlagenVon Anfang an wird mit anschaulichen Windows-Anwendungen gearbei-
tet. Die Grundlagen der Programmiersprache und die Standardelemente
einer Windows-Anwendung, wie Sie sie schon von anderen Windows-Pro-
grammen kennen, werden gemeinsam vermittelt. Die Anschaulichkeit
einer Windows-Anwendung hilft Ihnen dabei, den eher theoretischen Hin-
tergrund der Programmiersprache leichter zu verstehen.
1.2 Visual Studio 2015
Community-VersionEs wird die frei verfügbare Entwicklungsumgebung Visual Studio Com-
munity 2015 eingesetzt. Sie können sie unter Windows 7 bis Windows 10
nutzen. Diese Version von Visual Studio können Sie bei Microsoft
3703.book Seite 17 Donnerstag, 3. September 2015 2:52 14
1 Einführung
18
herunterladen (www.visualstudio.com/de-de) und auf Ihrem PC installie-
ren. Eine Installationsanleitung finden Sie in Anhang A. Die Projekte in
diesem Buch wurden unter Windows 10 bearbeitet. Auch die Screenshots
sind unter dieser Windows-Version entstanden.
Visual Studio 2015 bietet eine komfortable Entwicklungsumgebung. Sie
umfasst einen Editor zur Erstellung des Programmcodes, einen Compiler
zur Erstellung der ausführbaren Programme, einen Debugger zur Fehler-
suche und vieles mehr. Zur Installation verweise ich auf den Anhang.
Statt der hier empfohlenen Community-Version können Sie auch verschie-
dene frei verfügbare Express-Versionen von Visual Studio 2015 nutzen. Sie
können sie von der Microsoft-Internetseite per Web-Installer auf Ihrem
Rechner installieren.
Noch eine Anmerkung in eigener Sache: Für die Hilfe bei der Erstellung die-
ses Buchs bedanke ich mich beim Team des Rheinwerk-Verlags, besonders
bei Anne Scheibe.
Thomas Theis
1.3 Mein erstes Windows-Programm
Anhand eines ersten Projekts werden die Schritte durchlaufen, die zur
Erstellung eines einfachen Programms mithilfe von Visual Basic notwen-
dig sind. Das Programm soll nach dem Aufruf zunächst aussehen wie in
Abbildung 1.1.
Abbildung 1.1 Erstes Programm, nach dem Aufruf
Nach Betätigung des Buttons Hallo soll sich der Text in der obersten Zeile
verändern, siehe Abbildung 1.2.
3703.book Seite 18 Donnerstag, 3. September 2015 2:52 14
1.4 Visual-Basic-Entwicklungsumgebung
19
1
Abbildung 1.2 Nach Betätigung des Buttons »Hallo«
1.4 Visual-Basic-Entwicklungsumgebung
Während der Projekterstellung lernen Sie Schritt für Schritt die Visual-Stu-
dio-Entwicklungsumgebung für Visual Basic kennen.
1.4.1 Ein neues Projekt
Nach dem Aufruf des Programms Visual Studio Community 2015 müssen
Sie zur Erstellung eines neuen Projekts den Menüpunkt Datei • Neues
Projekt • Installiert • Vorlagen • Visual Basic • Windows Forms-
Anwendung auswählen. Als Projektname wird WindowsApplication1 vor-
geschlagen. Sie sollten ihn ändern, z. B. in MeinErstes.
Es erscheinen einige Elemente der Entwicklungsumgebung. Folgende Ele-
mente sind besonders wichtig:
Form� Das Benutzerformular (engl.: Form) enthält die Oberfläche für den Be-
nutzer des Programms (siehe Abbildung 1.3).
Abbildung 1.3 Benutzerformular
Toolbox� Der Werkzeugkasten (engl.: Toolbox) enthält die Steuerelemente für
den Benutzer, mit denen er den Ablauf des Programms steuern kann. Sie
3703.book Seite 19 Donnerstag, 3. September 2015 2:52 14
1 Einführung
20
werden vom Programmentwickler in das Formular eingefügt (siehe
Abbildung 1.4).
Abbildung 1.4 Werkzeugkasten, mit Kategorien von Steuerelementen
Eigenschaften-
Fenster
� Das Eigenschaften-Fenster (engl.: Properties Window) dient zum An-
zeigen und Ändern der Eigenschaften von Steuerelementen innerhalb
des Formulars durch den Programmentwickler (siehe Abbildung 1.5). Ich
empfehle Ihnen, sich die Eigenschaften in alphabetischer Reihenfolge
anzeigen zu lassen. Dazu einfach das zweite Symbol von links, unter
Form1, betätigen.
Abbildung 1.5 Eigenschaften-Fenster
Projektmappen-
Explorer
� Der Projektmappen-Explorer (engl.: Solution Explorer) zeigt das
geöffnete Projekt und die darin vorhandenen Elemente (siehe Abbil-
dung 1.6).
3703.book Seite 20 Donnerstag, 3. September 2015 2:52 14
1.4 Visual-Basic-Entwicklungsumgebung
21
1
Abbildung 1.6 Projektmappen-Explorer
Elemente anzeigenSollten der Werkzeugkasten, das Eigenschaften-Fenster oder der Pro-
jektmappen-Explorer nicht angezeigt werden, dann können Sie das
betreffende Element über das Menü Ansicht einblenden. Sollte das For-
mular einmal nicht sichtbar sein, können Sie es über einen Doppelklick auf
den Namen (Form1.vb) im Projektmappen-Explorer einblenden. Soll-
ten die Eigenschaften eines Steuerelements nicht im bereits sichtbaren
Eigenschaften-Fenster angezeigt werden, dann markieren Sie zunächst
den Namen der Formulardatei (Form1.vb) im Projektmappen-Explorer
und anschließend das betreffende Steuerelement.
Zunächst werden nur einfache Programme mit wenigen Elementen
geschrieben, daher benötigen Sie den Projektmappen-Explorer noch
nicht. Es empfiehlt sich, das Eigenschaften-Fenster nach oben zu ver-
größern.
1.4.2 Einfügen von Steuerelementen
Label, ButtonZunächst sollen drei Steuerelemente in das Formular eingefügt werden:
ein Bezeichnungsfeld (Label) und zwei Befehlsschaltflächen (Buttons). Ein
Bezeichnungsfeld dient im Allgemeinen dazu, feste oder veränderliche
Texte auf der Benutzeroberfläche anzuzeigen. In diesem Programm soll
das Label einen Text anzeigen. Ein Button dient zum Starten bestimmter
Programmteile oder, allgemeiner ausgedrückt, zum Auslösen von Ereignis-
sen. In diesem Programm sollen die Buttons den Text anzeigen bzw. das
Programm beenden.
Allgemeine Steuer-
elemente
Um ein Steuerelement einzufügen, ziehen Sie es mithilfe der Maus vom
Werkzeugkasten an die gewünschte Stelle im Formular. Alle Steuerele-
mente finden sich im Werkzeugkasten unter Alle Windows Forms.
3703.book Seite 21 Donnerstag, 3. September 2015 2:52 14
1 Einführung
22
Übersichtlicher ist der Zugriff über Allgemeine Steuerelemente (engl.:
Common Controls), siehe Abbildung 1.7.
Abbildung 1.7 Werkzeugkasten, Kategorie »Allgemeine Steuerelemente«
Steuerelement
auswählen
Ein Doppelklick auf ein Steuerelement im Werkzeugkasten fügt es eben-
falls in die Form ein. Anschließend können Ort und Größe noch verändert
werden. Dazu müssen Sie das betreffende Steuerelement vorher durch
Anklicken ausgewählt haben, siehe Abbildung 1.8. Ein überflüssiges Steuer-
element können Sie durch Auswählen und Drücken der Taste (Entf) ent-
fernen.
Abbildung 1.8 Ausgewählter Button
Die Größe und andere Eigenschaften des Formulars selbst können auch
verändert werden. Dazu müssen Sie es vorher durch Anklicken auf einer
freien Stelle auswählen.
1.4.3 Arbeiten mit dem Eigenschaften-Fenster
Die eingefügten Steuerelemente haben zunächst einheitliche Namen und
Aufschriften, diese sollten allerdings zur einfacheren Programmentwick-
lung geändert werden. Es haben sich bestimmte Namenskonventionen
eingebürgert, welche die Lesbarkeit erleichtern. Diese Namen beinhalten
den Typ (mit drei Buchstaben abgekürzt) und die Aufgabe des Steuerele-
ments (mit großem Anfangsbuchstaben).
3703.book Seite 22 Donnerstag, 3. September 2015 2:52 14
1.4 Visual-Basic-Entwicklungsumgebung
23
1cmd, txt, lbl, ...Ein Button (eigentlich: Command Button), der die Anzeige der Zeit auslö-
sen soll, wird beispielsweise mit cmdZeit bezeichnet. Weitere Vorsilben sind
txt (Textfeld/TextBox), lbl (Bezeichnungsfeld/Label), opt (Optionsschalt-
fläche/RadioButton), frm (Formular/Form) und chk (Kontrollkästchen/
CheckBox).
Zur Änderung des Namens eines Steuerelementes müssen Sie es zunächst
auswählen. Die Auswahl kann entweder durch Anklicken des Steuerele-
ments auf dem Formular oder durch Auswahl aus der Liste am oberen Ende
des Eigenschaften-Fensters geschehen.
Eigenschaften-
Fenster
Im Eigenschaften-Fenster werden alle Eigenschaften des ausgewählten
Steuerelements angezeigt. Die Liste ist zweispaltig: In der linken Spalte
steht der Name der Eigenschaft, in der rechten Spalte ihr aktueller Wert. Die
Eigenschaft (Name) steht am Anfang der Liste der Eigenschaften. Die
betreffende Zeile wird durch Anklicken ausgewählt, und der neue Name
wird eingegeben. Nach Bestätigung mit der Taste (¢) ist die Eigenschaft
geändert, siehe Abbildung 1.9.
Abbildung 1.9 Button, nach der Namensänderung
Eigenschaft TextDie Aufschrift von Buttons, Labels und Formularen ist in der Eigenschaft
Text angegeben. Sobald diese Eigenschaft verändert wird, erscheint die ver-
änderte Aufschrift in dem betreffenden Steuerelement. Auch den Namen
und die Aufschrift des Formulars sollten Sie ändern. Im Folgenden sind die
gewünschten Eigenschaften für die Steuerelemente dieses Programms in
Tabellenform angegeben, siehe Tabelle 1.1.
StartzustandZu diesem Zeitpunkt legen Sie den Startzustand fest, also die Eigenschaf-
ten, welche die Steuerelemente zu Beginn des Programms bzw. eventuell
während des gesamten Programms haben sollen. Viele Eigenschaften kön-
nen Sie auch während der Laufzeit des Programms durch den Programm-
code verändern lassen.
3703.book Seite 23 Donnerstag, 3. September 2015 2:52 14
1 Einführung
24
Bei einem Label ergibt die Einstellung der Eigenschaft BorderStyle auf
FixedSingle einen Rahmen. Zur Änderung auf FixedSingle müssen Sie die
Liste bei der Eigenschaft aufklappen und den betreffenden Eintrag auswäh-
len, siehe Abbildung 1.10. Zur Änderung einiger Eigenschaften müssen Sie
eventuell sogar ein Dialogfeld aufrufen.
Abbildung 1.10 Label, nach der Änderung von Name und BorderStyle
Im Label soll zunächst der Text (leer) erscheinen. Hierzu müssen Sie den
vorhandenen Text durch Anklicken auswählen und ändern.
Typ Eigenschaft Einstellung
Formular Text Mein Erstes
Button Name cmdHallo
Text Hallo
Button Name cmdEnde
Text Ende
Label Name lblAnzeige
Text (leer)
BorderStyle FixedSingle
Tabelle 1.1 Steuerelemente mit Eigenschaften
3703.book Seite 24 Donnerstag, 3. September 2015 2:52 14
1.4 Visual-Basic-Entwicklungsumgebung
25
1Liste der Steuer-
elemente
Sie finden alle in diesem Formular vorhandenen Steuerelemente in der
Liste, die sich am oberen Ende des Eigenschaften-Fensters öffnen lässt.
Dabei zeigt sich ein Vorteil der einheitlichen Namensvergabe: Die Steuer-
elemente des gleichen Typs stehen direkt untereinander.
1.4.4 Speichern eines Projekts
Alles speichernDie Daten eines Visual-Basic-Projekts werden in verschiedenen Dateien
gespeichert. Zum Speichern des gesamten Projekts wird der Menüpunkt
Datei • Alles Speichern verwendet. Diesen Vorgang sollten Sie in regel-
mäßigen Abständen durchführen, damit keine Änderungen verloren
gehen können.
Die in diesem Skript angegebenen Namen dienen als Empfehlung. Sie
erleichtern die eindeutige Orientierung und das spätere Auffinden von
alten Programmen.
1.4.5 Das Codefenster
EreignisDer Ablauf eines Windows-Programms wird im Wesentlichen durch das
Auslösen von Ereignissen durch den Benutzer gesteuert. Er löst z. B. die
Anzeige des Texts Hallo aus, indem er auf den Button Hallo klickt. Sie als
Entwickler müssen dafür sorgen, dass aufgrund dieses Ereignisses der
gewünschte Text angezeigt wird. Zu diesem Zweck schreiben Sie Pro-
grammcode und ordnen diesen Code dem Ereignis zu. Der Code wird in
einer Ereignisprozedur abgelegt.
EreignisprozedurZum Schreiben einer Ereignisprozedur führen Sie am besten einen Dop-
pelklick auf das betreffende Steuerelement aus. Es erscheint das Code-
fenster. Zwischen der Formular- und der Code-Ansicht können Sie an-
schließend über die Menüpunkte Ansicht • Code bzw. Ansicht • Desi-
gner hin- und herschalten. Das ist auch über die Registerkarten oberhalb
des Formulars bzw. des Codefensters möglich, siehe Abbildung 1.11.
Abbildung 1.11 Registerkarten
3703.book Seite 25 Donnerstag, 3. September 2015 2:52 14
1 Einführung
26
Nach erfolgtem Doppelklick auf den Button Hallo erscheinen im Code-
fenster folgende Einträge:
Public Class Form1Private Sub cmdHallo_Click(sender As Object,
e As EventArgs) Handles cmdHallo.ClickEnd Sub
End Class
Listing 1.1 Projekt »MeinErstes«, Button »Hallo«, ohne Code
Innerhalb der Ereignisprozedur ist der Platz für den eigenen Programm-
code.
Class VB.NET ist eine objektorientierte Sprache. Ein wichtiges Element objektori-
entierter Sprachen sind Klassen. Alle Elemente des aktuellen Formulars
Form1 stehen innerhalb der Klasse Form1 (zwischen Public Class und End
Class). Auf die Einzelheiten der Objektorientierung wird zu einem späteren
Zeitpunkt eingegangen, da das hier noch nicht notwendig ist und eher ver-
wirren würde.
Sub Der Programmcode der Ereignisprozedur steht später zwischen Private Sub
und End Sub. Der Name der Prozedur besteht aus den zwei Teilen Name des
Steuerelements und Ereignis.
Zeilenumbruch Die Anweisung Private Sub ... ist recht lang, daher wurde sie auf mehrere
Zeilen verteilt. Visual Basic ermöglicht Zeilenumbrüche an bestimmten
Stellen einer Anweisung auf einfache Art und Weise. Das erhöht wesentlich
die Lesbarkeit von Programmen. Aus Druckgründen werden in diesem
Buch häufig längere Anweisungen auf mehrere Zeilen verteilt. Die Regeln
für Zeilenumbrüche finden Sie in Abschnitt 1.4.12. Der anfänglich ausge-
führte Doppelklick führt immer zu dem Ereignis, das am häufigsten mit
dem betreffenden Steuerelement verbunden wird. Das ist beim Button
natürlich das Ereignis Click. Zu einem Steuerelement gibt es aber auch
noch andere mögliche Ereignisse.
Oberhalb von Public Class ... und von Private Sub ... erscheinen seit
Visual Studio 2015 automatisch weitere Informationen zur Klasse Form1
und ihren Elementen in kleiner grauer Schrift, wie zum Beispiel 0 refe-
rences oder 2 references. Auch sie können wir zunächst ignorieren.
3703.book Seite 26 Donnerstag, 3. September 2015 2:52 14
1.4 Visual-Basic-Entwicklungsumgebung
27
11.4.6 Schreiben von Programmcode
In der Prozedur cmdHallo_Click() soll eine Befehlszeile eingefügt werden,
sodass sie anschließend wie folgt aussieht:
Public Class Form1Private Sub cmdHallo_Click(sender As Object,
e As EventArgs) Handles cmdHallo.ClicklblAnzeige.Text = "Hallo"
End SubEnd Class
Listing 1.2 Projekt »MeinErstes«, Button »Hallo«, mit Code
Der Text muss in Anführungszeichen gesetzt werden, da Visual Basic sonst
annimmt, dass es sich um eine Variable mit dem Namen Hallo handelt.
AnweisungDer Inhalt einer Prozedur setzt sich aus einzelnen Anweisungen zusam-
men, die nacheinander ausgeführt werden. Die vorliegende Prozedur ent-
hält nur eine Anweisung; in ihr erfolgt mithilfe des Gleichheitszeichens
eine Zuweisung.
ZuweisungBei einer Zuweisung wird der Ausdruck rechts vom Gleichheitszeichen aus-
gewertet und der Variablen, der Objekt-Eigenschaft oder der Steuerelemen-
teigenschaft links vom Gleichheitszeichen zugewiesen. Die Zeichenkette
Hallo wird der Eigenschaft Text des Steuerelements lblAnzeige mithilfe der
Schreibweise Steuerelement.Eigenschaft = Wert zugewiesen. Das führt zur
Anzeige des Werts.
Nach dem Wechsel auf die Formularansicht können Sie das nächste Steuer-
element auswählen, für das eine Ereignisprozedur geschrieben werden
soll.
Code editierenInnerhalb des Codefensters können Sie Text mit den gängigen Methoden
der Textverarbeitung editieren, kopieren, verschieben und löschen.
SyntaxfehlerSollten Sie bereits bei der Eingabe des Programmcodes Syntaxfehler
gemacht haben, wird das angezeigt. Sie sollten den Code unmittelbar ent-
sprechend korrigieren.
In der Ereignisprozedur cmdEnde_Click() soll der folgende Code stehen:
3703.book Seite 27 Donnerstag, 3. September 2015 2:52 14
1 Einführung
28
Private Sub cmdEnde_Click(sender As Object,e As EventArgs) Handles cmdEnde.Click
Close()End Sub
Listing 1.3 Projekt »MeinErstes«, Button »Ende«
Die Methode Close() dient zum Schließen eines Formulars. Da es sich um
das einzige Formular dieses Projekts handelt, wird dadurch das Programm
beendet und die gesamte Windows-Anwendung geschlossen.
Me Das aktuelle Objekt einer Klasse wird mit Me bezeichnet. Da wir uns inner-
halb der Klasse für das aktuelle Formular befinden, bezieht sich Me auf die-
ses Formular. Die Anweisung zum Schließen dieses Formulars könnte also
auch lauten: Me.Close(). In vielen Fällen ist Me allerdings überflüssig und
kann weggelassen werden.
Graue Schriftfarbe Seit der Version 2015 von Visual Studio werden überflüssige Elemente im
Programmcode deutlicher gekennzeichnet, indem sie in grauer Schrift-
farbe dargestellt werden. Falls sich der Cursor in der betreffenden Zeile
befindet, dann erscheint links von der Zeile eine gelbe Glühbirne. Platzie-
ren Sie die Maus über dieser Glühbirne, dann wird der Zugang zu Hinwei-
sen ermöglicht, wie die überflüssigen Elemente entfernt werden können.
In Abbildung 1.12 sehen Sie ein Beispiel: Im Programmcode wurde
Me.Close() statt Close() notiert.
Abbildung 1.12 »Me« kann entfernt werden.
Das waren Beispiele zur Änderung der Eigenschaften eines Steuerelements
zur Laufzeit des Programms durch Programmcode. Sie erinnern sich: Zu
Beginn hatten wir die Starteigenschaften der Steuerelemente im Eigen-
schaften-Fenster eingestellt.
3703.book Seite 28 Donnerstag, 3. September 2015 2:52 14
1.4 Visual-Basic-Entwicklungsumgebung
29
11.4.7 Kommentare
Einfaches
Hochkomma
Bei längeren Programmen mit vielen Anweisungen gehört es zum guten
Programmierstil, Kommentarzeilen zu schreiben. In diesen Zeilen werden
einzelne Anweisungen oder auch längere Blöcke von Anweisungen erläu-
tert, damit Sie selbst oder auch ein anderer Programmierer sie später leich-
ter verstehen. Eine Kommentarzeile beginnt mit einem einfachen
Hochkomma. Alle Zeichen bis zum Ende der Zeile werden als Kommentar
angesehen und folglich nicht übersetzt oder ausgeführt.
Der folgende Programmcode wurde um eine Kommentarzeile ergänzt:
Private Sub cmdEnde_Click(sender As Object,e As EventArgs) Handles cmdEnde.Click
' Schließt die AnwendungClose()
End Sub
Listing 1.4 Projekt »MeinErstes«, Button »Ende«, mit Kommentar
Code aus-
kommentieren
Ein kleiner Trick: Sollen bestimmte Programmzeilen für einen Test des Pro-
gramms kurzfristig nicht ausgeführt werden, können Sie sie auskommen-
tieren, indem Sie das Hochkomma vor die betreffenden Zeilen setzen. Das
geht sehr schnell, indem Sie die betreffende(n) Zeile(n) markieren und
anschließend das entsprechende Symbol im linken Bereich der Symbol-
leiste anklicken, siehe Abbildung 1.13. Rechts daneben befindet sich das
Symbol, das die Auskommentierung nach dem Test wieder rückgängig
macht.
Abbildung 1.13 Kommentar ein/aus
1.4.8 Starten, Ausführen und Beenden des Programms
Programm startenNach dem Einfügen der Steuerelemente und dem Erstellen der Ereig-
nisprozeduren ist das Programm fertig, und Sie können es starten. Dazu
wird der Starten-Button in der Symbolleiste (dreieckiger grüner Pfeil nach
rechts) betätigt. Alternativ starten Sie das Programm über die Funktions-
taste (F5) oder den Menüpunkt Debuggen • Debugging starten. Das
Formular erscheint, das Betätigen der Buttons führt zum programmierten
Ergebnis.
3703.book Seite 29 Donnerstag, 3. September 2015 2:52 14
1 Einführung
30
Programm beenden Zur regulären Beendigung eines Programms dient der Button mit der Auf-
schrift Ende. Möchten Sie ein Programm während des Verlaufs abbrechen,
können Sie auch den End-Button in der Symbolleiste (rotes Quadrat) betä-
tigen.
Fehler Tritt während der Ausführung eines Programms ein Fehler auf, wird das
angezeigt, und das Codefenster zeigt die entsprechende Ereignisprozedur
sowie die fehlerhafte Zeile an. Beenden Sie das Programm, korrigieren Sie
den Code und starten Sie das Programm wieder.
Programm testen Es wird empfohlen, das Programm bereits während der Entwicklung mehr-
mals durch Aufruf zu testen und nicht erst, wenn das Programm vollstän-
dig erstellt worden ist. Geeignete Zeitpunkte sind z. B.
� nach dem Einfügen der Steuerelemente und dem Zuweisen der Eigen-
schaften, die sie zu Programmbeginn haben sollen,
� nach dem Erstellen jeder Ereignisprozedur.
1.4.9 Ausführbares Programm
.exe-Datei Nach erfolgreichem Test des Programms könnten Sie auch die ausführbare
Datei (.exe-Datei) außerhalb der Entwicklungsumgebung aufrufen. Haben
Sie an den Grundeinstellungen nichts verändert und die vorgeschlagenen
Namen verwendet, findet sich die zugehörige .exe-Datei des aktuellen Pro-
jekts im Verzeichnis Eigene Dokumente\Visual Studio 2015\Projects\
MeinErstes\MeinErstes\bin\Debug. Sie können das Programm also im Win-
dows-Explorer direkt über Doppelklick starten.
Die Weitergabe eines eigenen Windows-Programms auf einen anderen PC
ist etwas aufwendiger. Der Vorgang wird im Anhang beschrieben.
1.4.10 Projekt schließen, Projekt öffnen
Projekt schließen Sie können ein Projekt über den Menüpunkt Datei • Projektmappe
schließen schließen. Falls Sie Veränderungen vorgenommen haben, wer-
den Sie gefragt, ob Sie diese Änderungen speichern möchten.
Möchten Sie die Projektdaten sicherheitshalber zwischendurch speichern,
ist das über den Menüpunkt Datei • Alles speichern möglich. Das ist bei
längeren Entwicklungsphasen sehr zu empfehlen.
Projekt öffnen Zum Öffnen eines vorhandenen Projekts wählen Sie den Menüpunkt
Datei • Projekt öffnen. Im darauffolgenden Dialogfeld Projekt öffnen
3703.book Seite 30 Donnerstag, 3. September 2015 2:52 14
1.4 Visual-Basic-Entwicklungsumgebung
31
1wählen Sie zunächst das gewünschte Projektverzeichnis aus und anschlie-
ßend die gleichnamige Datei mit der Endung .sln.
Alle Beispielprojekte finden Sie auf www.rheinwerk-verlag.de/3813 unter
»Materialien zum Buch« zum Download. Sie können diese Projekte auf Ihre
Festplatte kopieren. Sollte eines der Projekte einmal nicht gestartet werden
können, dann sollten Sie es neu über den Menüpunkt Erstellen • Pro-
jektmappe neu erstellen erstellen.
1.4.11 Übung
Übung ÜNameErstellen Sie ein Windows-Programm mit einem Formular, das zwei But-
tons und ein Label beinhaltet, siehe Abbildung 1.14. Bei Betätigung des ers-
ten Buttons erscheint im Label Ihr Name. Bei Betätigung des zweiten
Buttons wird das Programm beendet. Namensvorschläge: Projektname
ÜName, Buttons cmdMyName und cmdEnde, Label lblMyName.
Abbildung 1.14 Übung ÜName
1.4.12 Regeln für Zeilenumbrüche
ZeilenumbruchVisual Basic ermöglicht Zeilenumbrüche an bestimmten Stellen einer
Anweisung auf einfache Art und Weise. Das erhöht die Lesbarkeit des Pro-
grammcodes. Einige Regeln wurden bereits im ersten Programm ange-
wandt. Hier noch einmal die Prozedur cmdHallo_Click():
Private Sub cmdHallo_Click(sender As Object,e As EventArgs) Handles cmdHallo.Click
lblAnzeige.Text = "Hallo"End Sub
Listing 1.5 Projekt »MeinErstes«, Ausschnitt
RegelnEin Zeilenumbruch ist möglich:
� nach einer öffnenden Klammer, siehe erste Prozedurzeile
� vor einer schließenden Klammer, siehe dritte Prozedurzeile
� nach einem Komma, siehe zweite Prozedurzeile
3703.book Seite 31 Donnerstag, 3. September 2015 2:52 14
1 Einführung
32
Außerdem wäre ein Zeilenumbruch z. B. auch möglich:
� nach den meisten Operatoren, also auch nach dem Zuweisungsoperator
(=) hinter lblAnzeige.Text, siehe Abschnitt 2.2.5
� nach einem Punkt hinter einem Objektnamen, also auch nach dem
Punkt hinter dem Objektnamen lblAnzeige
Auf keinen Fall dürfen Zeilenumbrüche innerhalb einer Zeichenkette
durchgeführt werden. Weitere Möglichkeiten für Zeilenumbrüche werden
jeweils an der passenden Stelle erläutert.
Unterstrich Falls Sie das Zeichen _ (Unterstrich) am Ende einer Zeile notieren, dann
kann anschließend in jedem Fall ein Zeilenumbruch durchgeführt werden,
unabhängig von den oben genannten Regeln.
1.5 Arbeiten mit Steuerelementen
1.5.1 Steuerelemente formatieren
Hilfslinien Zur besseren Anordnung der Steuerelemente auf dem Formular können
Sie sie mithilfe der Maus nach Augenmaß verschieben. Dabei erscheinen
automatisch Hilfslinien, falls das aktuelle Element horizontal oder vertikal
parallel zu einem anderen Element steht.
Mehrere Steuerele-
mente markieren
Weitere Möglichkeiten bieten die Menüpunkte im Menü Format. In vie-
len Fällen müssen vorher mehrere Steuerelemente auf einmal markiert
werden, siehe Abbildung 1.15.
Abbildung 1.15 Mehrere markierte Elemente
Das geschieht entweder
� durch Umrahmung der Elemente mit einem Rechteck, nachdem Sie
zuvor das Steuerelement (Maus-)Zeiger ausgewählt haben, oder
3703.book Seite 32 Donnerstag, 3. September 2015 2:52 14
1.5 Arbeiten mit Steuerelementen
33
1� durch Mehrfachauswahl, indem ab dem zweiten auszuwählenden
Steuerelement die (ª)-Taste (wie für Großbuchstaben) oder die (Strg)-
Taste gedrückt wird.
Menü »Format«Über das Menü Format haben Sie anschließend folgende Möglichkeiten
zur Anpassung der Steuerelemente:
� Die ausgewählten Steuerelemente können horizontal oder vertikal
zueinander ausgerichtet werden (Menü Format • Ausrichten).
� Die horizontalen und/oder vertikalen Dimensionen der ausgewählten
Steuerelemente können angeglichen werden (Menü Format • Größe
angleichen).
Einheitliche
Abstände
� Die horizontalen und vertikalen Abstände zwischen den ausgewählten
Steuerelementen können angeglichen, vergrößert, verkleinert oder ent-
fernt werden (Menü Format • Horizontaler Abstand/Vertikaler
Abstand).
� Die Steuerelemente können horizontal oder vertikal innerhalb des For-
mulars zentriert werden (Menü Format • Auf Formular zentrieren).
� Sollten sich die Steuerelemente teilweise überlappen, können Sie ein-
zelne Steuerelemente in den Vorder- bzw. Hintergrund schieben (Menü
Format • Reihenfolge).
� Sie können alle Steuerelemente gleichzeitig gegen versehentliches Ver-
schieben absichern (Menü Format • Steuerelemente Sperren). Diese
Sperrung gilt nur während der Entwicklung des Programms.
Abbildung 1.16 zeigt ein Formular mit drei Buttons, die alle links ausgerich-
tet sind und im gleichen vertikalen Abstand voneinander stehen.
Abbildung 1.16 Nach der Formatierung
3703.book Seite 33 Donnerstag, 3. September 2015 2:52 14
1 Einführung
34
Übung
Laden Sie das Projekt MeinErstes aus dem vorherigen Abschnitt, markieren
Sie darin mehrere Steuerelemente und testen Sie die einzelnen Möglich-
keiten des Format-Menüs.
1.5.2 Steuerelemente kopieren
Steuerelemente
kopieren
Zur schnelleren Erzeugung eines Projekts können vorhandene Steuerele-
mente einschließlich aller ihrer Eigenschaften kopiert werden. Markieren
Sie hierzu die gewünschten Steuerelemente und kopieren Sie sie entweder
� über das Menü Bearbeiten • Kopieren und das Menü Bearbeiten •
Einfügen oder
� mit den Tasten (Strg) + (C) und (Strg)+ (V).
Anschließend sollten die neu erzeugten Steuerelemente direkt umbe-
nannt und an der gewünschten Stelle angeordnet werden.
Übung
Laden Sie das Projekt MeinErstes aus Abschnitt 1.4 und kopieren Sie ein-
zelne Steuerelemente. Kontrollieren Sie anschließend die Liste der vorhan-
denen Steuerelemente im Eigenschaften-Fenster auf einheitliche
Namensgebung.
1.5.3 Eigenschaften zur Laufzeit ändern
Size, Location Steuerelemente haben die Eigenschaften Size (mit den Komponenten
Width und Height) und Location (mit den Komponenten X und Y) zur
Angabe von Größe und Position. X und Y geben die Koordinaten der oberen
linken Ecke des Steuerelements an, gemessen von der oberen linken Ecke
des umgebenden Elements (meist das Formular). Alle Werte werden in
Pixeln gemessen.
Alle diese Eigenschaften können sowohl während der Entwicklungszeit als
auch während der Laufzeit eines Projekts verändert werden. Zur Änderung
während der Entwicklungszeit können Sie die Eigenschaft wie gewohnt im
Eigenschaften-Fenster eingeben. Als Beispiel für Änderungen während
der Laufzeit soll das folgende Programm (Projekt Steuerelemente) dienen,
siehe Abbildung 1.17.
3703.book Seite 34 Donnerstag, 3. September 2015 2:52 14
1.5 Arbeiten mit Steuerelementen
35
1
Abbildung 1.17 Position und Größe bestimmen
Der Programmcode:
Public Class Form1Private Sub cmdPositionRel_Click(...) Handles ...
cmdTest.Location = New Point(cmdTest.Location.X + 20, cmdTest.Location.Y)
End SubPrivate Sub cmdPositionAbs_Click(...) Handles ...
cmdTest.Location = New Point(100, 200)End SubPrivate Sub cmdGrößeRel_Click(...) Handles ...
cmdTest.Size = New Size(cmdTest.Size.Width + 20, cmdTest.Size.Height)
End SubPrivate Sub cmdGrößeAbs_Click(...) Handles ...
cmdTest.Size = New Size(50, 100)End Sub
End Class
Listing 1.6 Projekt »Steuerelemente«
Zur Erläuterung:
Verkürzte
Darstellung
� Der Kopf der einzelnen Prozeduren wurde aus Gründen der Übersicht-
lichkeit jeweils in verkürzter Form abgebildet. Das wird bei den meisten
nachfolgenden Beispielen ebenfalls so sein, außer wenn es genau auf die
Inhalte des Prozedurkopfs ankommt.
� Das Formular enthält fünf Buttons. Die oberen vier Buttons dienen der
Veränderung von Position und Größe des fünften Buttons.
3703.book Seite 35 Donnerstag, 3. September 2015 2:52 14
1 Einführung
36
� Die Position eines Elements kann relativ zur aktuellen Position oder auf
absolute Werte eingestellt werden. Das Gleiche gilt für die Größe eines
Elements.
� Bei beiden Angaben handelt es sich um Wertepaare (X/Y bzw. Breite/Höhe).
New Point � Zur Einstellung der Position dient die Struktur Point. Ein Objekt dieser
Struktur liefert ein Wertepaar. In diesem Programm wird mit New jeweils
ein neues Objekt der Struktur Point erzeugt, um das Wertepaar bereitzu-
stellen.
X, Y � Bei Betätigung des Buttons Position Abs wird die Position des fünften
Buttons auf die Werte X=100 und Y=200 gestellt, gemessen von der linken
oberen Ecke des Formulars.
� Bei Betätigung des Buttons Position Rel wird die Position des fünften
Buttons auf die Werte X = cmdTest.Location.X + 20 und Y = cmdTest.Loca-
tion.Y gestellt. Bei X wird also der alte Wert der Komponente X um 20
erhöht, das Element bewegt sich nach rechts. Bei Y wird der alte Wert der
Komponente Y nicht verändert, das Element bewegt sich nicht nach
oben oder unten.
Width, Height � Zur Einstellung der Größe dient die Struktur Size.
� Bei Betätigung des Buttons Größe Abs wird die Größe des fünften But-
tons auf die Werte Width = 50 und Height = 100 gestellt.
� Bei Betätigung des Buttons Größe Rel wird die Größe des fünften
Buttons auf die Werte Width = cmdTest.Size.Width + 20 und Height =
cmdTest.Size.Height gestellt. Bei Width wird also der alte Wert der Kom-
ponente Width um 20 erhöht, das Element wird breiter. Bei Height wird
der alte Wert der Komponente Height nicht modifiziert, das Element
verändert seine Höhe nicht.
Nach einigen Klicks sieht das Formular aus wie in Abbildung 1.18.
Abbildung 1.18 Veränderung von Eigenschaften zur Laufzeit
3703.book Seite 36 Donnerstag, 3. September 2015 2:52 14
1.5 Arbeiten mit Steuerelementen
37
11.5.4 Vergabe und Verwendung von Namen
Beachten Sie in allen Programmen, dass jedes Steuerelement seinen eige-
nen, eindeutigen Namen hat und immer mit diesem Namen angesprochen
werden muss. Es passiert erfahrungsgemäß besonders am Anfang häufig,
dass ein Programm nicht zum gewünschten Erfolg führt, weil ein nicht vor-
handener Name verwendet wird. In diesem Zusammenhang weise ich
noch einmal auf die Namenskonventionen hin:
� Buttons sollten Namen wie z. B. cmdEnde, cmdAnzeigen, cmdBerechnen usw.
haben.
� Labels sollten Namen wie z. B. lblAnzeige, lblName, lblUhrzeit, lblBe-
ginnDatum haben.
Diese Namen liefern eine eindeutige Information über Typ und Funktion
des Steuerelements. Falls Sie beim Schreiben von Programmcode anschlie-
ßend diese Namen z. B. vollständig in Kleinbuchstaben eingeben, werden
sie nach Verlassen der Zeile automatisch korrigiert. Daran können Sie
schnell erkennen, ob Sie tatsächlich ein vorhandenes Steuerelement ver-
wendet haben.
1.5.5 Verknüpfung von Texten, mehrzeilige Texte
& und vbCrLfEs lassen sich mehrere Texte in einer Ausgabe mithilfe des Zeichens & mit-
einander verknüpfen. Falls Sie eine mehrzeilige Ausgabe wünschen, müs-
sen Sie zusätzlich einen Zeilenvorschub mithilfe der integrierten Visual-
Basic-Konstante vbCrLf eingeben.
Nachfolgend wird das Projekt Steuerelemente um ein Label ergänzt, in dem
die aktuelle Position und Größe des Buttons angezeigt werden. Das soll
nach Betätigung des Buttons Anzeige geschehen:
Public Class Form1[...]
Private Sub cmdAnzeige_Click(...) Handles ...lblAnzeige.Text =
"Position: X: " & cmdTest.Location.X & ", Y: " &cmdTest.Location.Y & vbCrLf & "Größe: Breite: " &cmdTest.Size.Width & ", Höhe: " & cmdTest.Size.Height
End SubEnd Class
Listing 1.7 Projekt »Steuerelemente«, mit Anzeige
3703.book Seite 37 Donnerstag, 3. September 2015 2:52 14
1 Einführung
38
Nach einigen Klicks und der Betätigung des Buttons Anzeige sieht das For-
mular aus wie in Abbildung 1.19.
Abbildung 1.19 Anzeige der Eigenschaften
1.5.6 Eigenschaft BackColor, Farben allgemein
BackColor Die Hintergrundfarbe eines Steuerelements wird mit der Eigenschaft Back-
Color festgelegt. Dabei können Sie die Farbe zur Entwicklungszeit leicht
mithilfe einer Farbpalette oder aus Systemfarben auswählen.
Color Hintergrundfarben und andere Farben können auch zur Laufzeit einge-
stellt werden, dabei verwenden Sie Farbwerte. Diese Farbwerte können Sie
über die Struktur Color auswählen.
Ein Beispiel, ebenfalls im Projekt Steuerelemente:
Public Class Form1[...]
Private Sub cmdFarbe_Click(...) Handles ...BackColor = Color.YellowlblAnzeige.BackColor = Color.FromArgb(192, 255, 0)
End SubEnd Class
Listing 1.8 Projekt »Steuerelemente«, mit Farben
Zur Erläuterung:
� Diese Struktur bietet vordefinierte Farbnamen als Eigenschaften, z. B.
Yellow. Der Wert kann der Eigenschaft BackColor des Steuerelements
zugewiesen werden, hier ist es das Formular selbst.
FromArgb() � Außerdem bietet die Struktur die Methode FromArgb(). Sie lässt sich auf
verschiedene Arten aufrufen. Eine dieser Arten erwartet genau drei
Parameter, nämlich die Werte für Rot, Grün und Blau, jeweils zwischen 0
und 255.
3703.book Seite 38 Donnerstag, 3. September 2015 2:52 14
1.5 Arbeiten mit Steuerelementen
39
1Das Formular sieht nach der Änderung der Eigenschaft Farbe aus wie in
Abbildung 1.20, wobei sich die Farbänderung bei der Schwarz-Weiß-Dar-
stellung im gedruckten Buch leider nicht gut wiedergeben lässt.
Abbildung 1.20 Nach Änderung der Eigenschaft »Farbe«
3703.book Seite 39 Donnerstag, 3. September 2015 2:52 14
41
2
Kapitel 2
Grundlagen
In diesem Kapitel erlernen Sie auf anschauliche Weise die Sprachgrund-
lagen von Visual Basic in Verbindung mit den gängigen Steuerelementen
von Windows-Programmen.
In den folgenden Abschnitten lernen Sie wichtige Elemente der Program-
mierung, wie Variablen, Operatoren, Verzweigungen und Schleifen, ge-
meinsam mit wohlbekannten und häufig verwendeten Steuerelementen
kennen.
2.1 Variablen und Datentypen
Variablen dienen zur vorübergehenden Speicherung von Daten, die sich
zur Laufzeit eines Programms ändern können. Eine Variable besitzt einen
eindeutigen Namen, unter dem sie angesprochen werden kann.
2.1.1 Namen und Werte
NamensregelnFür die Namen von Variablen gelten in Visual Basic die folgenden Regeln:
� Sie beginnen mit einem Buchstaben.
� Sie können nur aus Buchstaben, Zahlen und einigen wenigen Sonderzei-
chen (z. B. dem Unterstrich _ ) bestehen.
� Innerhalb eines Gültigkeitsbereichs darf es keine zwei Variablen mit
dem gleichen Namen geben (siehe Abschnitt 2.1.4).
Variablen erhalten ihre Werte durch Zuweisung per Gleichheitszeichen.
Falls eine Variable als Erstes auf der rechten Seite des Gleichheitszeichens
genutzt wird, sollte ihr vorher ein Wert zugewiesen werden. Dadurch wer-
den Programme eindeutiger, lesbarer und fehlerfreier.
3703.book Seite 41 Donnerstag, 3. September 2015 2:52 14
2 Grundlagen
42
2.1.2 Deklarationen
Neben dem Namen besitzt jede Variable einen Datentyp, der die Art der
Information bestimmt, die gespeichert werden kann. Sie als Entwickler
wählen den Datentyp danach aus, ob Sie Text, Zahlen ohne Nachkomma-
stellen, Zahlen mit Nachkommastellen oder z. B. logische Werte speichern
möchten.
Auswahl des
Datentyps
Außerdem müssen Sie sich noch Gedanken über die Größe des Bereichs
machen, den die Zahl oder der Text annehmen könnte, und über die ge-
wünschte Genauigkeit bei Zahlen. In Abschnitt 2.1.3 finden Sie eine Liste
der Datentypen.
Variablen sollten in Visual Basic immer mit einem Datentyp deklariert wer-
den. Das beugt Fehlern vor, die aufgrund einer falschen Verwendung der
Variablen entstehen könnten.
2.1.3 Datentypen
Die wichtigsten von Visual Basic unterstützten Datentypen lassen sich in
einige große Gruppen unterteilen:
Es gibt Datentypen zur Speicherung von ganzen Zahlen:
� den Datentyp Byte mit Werten von 0 bis 255
� den Datentyp Short mit Werten von –32.768 bis 32.767
Integer � den Datentyp Integer mit Werten von –2.147.483.648 bis 2.147.483.647
� und den Datentyp Long mit Werten von –9.223.372.036.854.775.808 bis
9.223.372.036.854.775.807
Außerdem gibt es Datentypen zur Speicherung von Zahlen mit Nachkom-
mastellen:
� den Datentyp Single mit einfacher Genauigkeit und Werten von
ca. –3,4×1038 bis ca. 3,4×1038
Double � den Datentyp Double, mit doppelter Genauigkeit und Werten von
ca. –1,7×10308 bis ca. 1,7×10308
� und den Datentyp Decimal, mit variabler Genauigkeit und Werten
von ca. –7,9×1028 bis ca. 7.9×1028
3703.book Seite 42 Donnerstag, 3. September 2015 2:52 14
2.1 Variablen und Datentypen
43
2
Einige weitere nützliche Datentypen sind:
� der Datentyp Boolean mit den Werten True oder False (wahr oder falsch)
Date� der Datentyp Date mit Werten für Datumsangaben vom 1. Januar des
Jahres 1 bis zum 31. Dezember 9999
� der Datentyp Char für einzelne Zeichen
String� der Datentyp String für Zeichenketten mit variabler Länge
Im folgenden Beispiel werden Variablen dieser Typen deklariert, mit Wer-
ten versehen und in einem Label angezeigt (Projekt Datentypen).
Public Class Form1Private Sub cmdAnzeige_Click(...) Handles ...
' Ganze ZahlenDim By As ByteDim Sh As ShortDim It As IntegerDim Lg As Long
' Zahlen mit NachkommastellenDim Sg As SingleDim Db As DoubleDim Dm As Decimal
' Boolesche Variable, Datum, Zeichen, ZeichenketteDim Bo As BooleanDim Dt As DateDim Ch As CharDim St As String
' Ganze ZahlenBy = 200Sh = 30000It = 2000000000Lg = 3000000000
' Zahlen mit NachkommastellenSg = 1 / 7Db = 1 / 7Dm = 1D / 7
3703.book Seite 43 Donnerstag, 3. September 2015 2:52 14
2 Grundlagen
44
' Boolesche Variable, Datum, Zeichen, ZeichenketteBo = TrueDt = "18.02.2015"Ch = "a"St = "Zeichenkette"
lblAnzeige.Text ="Byte: " & By & vbCrLf &"Short: " & Sh & vbCrLf &"Integer: " & It & vbCrLf &"Long: " & Lg & vbCrLf & vbCrLf &"Single: " & Sg & vbCrLf &"Double: " & Db & vbCrLf &"Decimal: " & Dm & vbCrLf & vbCrLf &"Boolean: " & Bo & vbCrLf &"Date: " & Dt & vbCrLf &"Char: " & Ch & vbCrLf &"String: " & St
End SubEnd Class
Listing 2.1 Projekt »Datentypen«
Das Programm hat nach Betätigung des Buttons die Ausgabe wie in Abbil-
dung 2.1 dargestellt.
Abbildung 2.1 Wichtige Datentypen
Zur Erläuterung:
Dim … As � Variablen werden mit Dim ... As ... deklariert. Mehrere Variablen des-
selben Datentyps können, durch Kommata getrennt, innerhalb einer
Zeile deklariert werden (z. B. Dim x, y As Integer).
3703.book Seite 44 Donnerstag, 3. September 2015 2:52 14
2.1 Variablen und Datentypen
45
2
� Variablen können bereits bei der Deklaration einen Wert erhalten, zum
Beispiel: Dim Sh As Short = 30000.
� Bei den Datentypen für ganze Zahlen führt die Zuweisung einer zu
großen Zahl zu einer Fehlermeldung.
Genauigkeit� Die Datentypen für Zahlen mit Nachkommastellen unterscheiden sich
in ihrer Genauigkeit. Nachkommastellen müssen im Programmcode
durch einen Dezimalpunkt abgetrennt werden. In der Ausgabe erscheint
dagegen ein Dezimalkomma. Die Zuweisung einer zu großen oder zu
kleinen Zahl führt zur Anzeige von »Unendlich« bzw. zu einer unge-
nauen Speicherung.
Exponential-
schreibweise
� Sehr große oder sehr kleine Zahlen lassen sich im Programmcode auch
in der Exponentialschreibweise eingeben. Zwei Beispiele: 1.5e3 für
1500.0 oder 1.5e-3 für 0.0015. Beim Wechsel der Zeile werden diese Zah-
len dann unmittelbar in Zahlen mit Nachkommastellen umgewandelt.
� Werte für Zeichen, Zeichenketten und Datumsvariablen müssen in dop-
pelten Anführungszeichen angegeben werden.
� Die Datentypen Integer, Double, Boolean und String werden am häufigs-
ten eingesetzt.
Übung
Übung
ÜDatentypen
Schreiben Sie ein Programm, in dem Ihr Nachname, Vorname, Ihre
Adresse, Ihr Geburtsdatum und Ihr Alter jeweils in Variablen eines geeigne-
ten Datentyps gespeichert und anschließend wie in Abbildung 2.2 ausgege-
ben werden.
Abbildung 2.2 Übung ÜDatentypen
2.1.4 Gültigkeitsbereich
LokalVariablen, die innerhalb einer Prozedur vereinbart wurden, haben ihre
Gültigkeit nur in der Prozedur. Außerhalb der Prozedur sind sowohl Name
als auch Wert unbekannt. Solche Variablen bezeichnet man auch als lokale
3703.book Seite 45 Donnerstag, 3. September 2015 2:52 14
2 Grundlagen
46
Variablen. Sobald die Prozedur abgearbeitet wurde, steht der Wert auch
nicht mehr zur Verfügung. Beim nächsten Aufruf derselben Prozedur wer-
den diese Variablen neu deklariert und erhalten neue Werte.
Static Anders verhält es sich mit statischen Variablen. Sie behalten ihren Wert, so-
lange das Programm läuft. Ein wiederholter Aufruf derselben Prozedur
kann auf den letzten gespeicherten Wert einer Variablen zugreifen. Eine
statische Variable vereinbaren Sie z. B. wie folgt: Static Sx As Integer.
Private, Dim Variablen, die außerhalb von Prozeduren vereinbart werden, sind inner-
halb der gesamten Klasse gültig, hier also innerhalb der Klasse des Formu-
lars. Ihr Wert kann in jeder Prozedur gesetzt oder abgerufen werden und
bleibt erhalten, solange das Formular im laufenden Programm existiert.
Sie können die Variablen sowohl mit dem Schlüsselwort Private als auch
mit dem Schlüsselwort Dim deklarieren. Sie sind außerhalb der Klasse nicht
gültig. Weitere Einzelheiten zu klassenweit gültigen Variablen finden Sie in
Kapitel 5.
Public Variablen, die mit dem Schlüsselwort Public vereinbart werden, sind öf-
fentlich. Damit sind sie auch außerhalb der jeweiligen Klasse gültig, also
z. B. in anderen Formularen. Mehr dazu ebenfalls in Kapitel 5.
Gibt es in einem Programmabschnitt mehrere Variablen mit dem gleichen
Namen, gelten folgende Regeln:
� Lokale Variablen mit gleichem Namen in der gleichen Prozedur sind
nicht zulässig.
Ausblenden � Eine klassenweit gültige Variable wird innerhalb einer Prozedur von
einer lokalen Variablen mit dem gleichen Namen ausgeblendet.
Im folgenden Beispiel werden Variablen unterschiedlicher Gültigkeitsbe-
reiche deklariert, an verschiedenen Stellen verändert und ausgegeben (Pro-
jekt Gültigkeitsbereich).
Public Class Form1Private Mx As Integer
Private Sub cmdAnzeigen1_Click(...) Handles ...Static Sx As IntegerDim x As IntegerSx = Sx + 1Mx = Mx + 1x = x + 1
3703.book Seite 46 Donnerstag, 3. September 2015 2:52 14
2.1 Variablen und Datentypen
47
2
lblAnzeige.Text = "Sx: " & Sx & " x: " & x & " Mx: " & MxEnd Sub
Private Sub cmdAnzeigen2_Click(...) Handles ...Dim Mx As IntegerMx = Mx + 1lblAnzeige.Text = "Mx: " & Mx
End SubEnd Class
Listing 2.2 Projekt »Gültigkeitsbereich«
Zur Erläuterung:
� In der ersten Prozedur wird der Wert der statischen Variablen Sx und der
klassenweit gültigen Variablen Mx bei jedem Aufruf erhöht. Die lokale
Variable x wird immer wieder auf 1 gesetzt, siehe Abbildung 2.3.
Abbildung 2.3 Lokale, statische und klassenweit gültige Variable
� In der zweiten Prozedur blendet die lokale Variable Mx die gleichnamige
klassenweit gültige Variable aus. Die lokale Variable wird immer wieder
auf 1 gesetzt, siehe Abbildung 2.4.
Abbildung 2.4 Lokale Variable
Startwert setzenHinweis: Die Variablen wurden vor ihrer ersten Benutzung nicht initia-
lisiert, d. h., sie wurden nicht mit einem Startwert besetzt. In Visual Basic
haben Zahlenvariablen zwar automatisch den Startwert 0, trotzdem soll-
ten Sie die Initialisierung im Sinne eines sauberen Programmierstils im
Normalfall selbst vornehmen.
3703.book Seite 47 Donnerstag, 3. September 2015 2:52 14
2 Grundlagen
48
Übung
Übung ÜGültig-
keitsbereich
Erstellen Sie ein Programm, in dem zwei Buttons, ein Label und drei Varia-
blen eines geeigneten Datentyps eingesetzt werden:
� die klassenweit gültige Variable x
� die Variable y, die nur lokal in der Prozedur zum Click-Ereignis des ers-
ten Buttons gültig ist
� die Variable z, die nur lokal in der Prozedur zum Click-Ereignis des zwei-
ten Buttons gültig ist
In der ersten Prozedur werden x und y jeweils um 0,1 erhöht und angezeigt,
siehe Abbildung 2.5. In der zweiten Prozedur werden x und z jeweils um 0,1
erhöht und angezeigt, siehe Abbildung 2.6.
Abbildung 2.5 Ausgabe der ersten Methode nach einigen Klicks
Abbildung 2.6 Ausgabe der zweiten Methode nach weiteren Klicks
2.1.5 Konstanten
Konstanten reprä-
sentieren Werte
Konstanten sind vordefinierte Werte, die während der Laufzeit nicht ver-
ändert werden können. Geben Sie Konstanten im Allgemeinen aussage-
kräftige Namen, dadurch sind sie leichter zu behalten als die Werte, die sie
repräsentieren. Konstanten werden an einer zentralen Stelle definiert und
können an verschiedenen Stellen des Programms genutzt werden. Somit
müssen Sie eine eventuelle Änderung einer Konstanten zur Entwurfszeit
nur an einer Stelle vornehmen. Der Gültigkeitsbereich von Konstanten ist
analog zum Gültigkeitsbereich von Variablen.
3703.book Seite 48 Donnerstag, 3. September 2015 2:52 14
2.1 Variablen und Datentypen
49
2
Integrierte
Konstanten
Zu den Konstanten zählen auch die integrierten Konstanten, wie z. B.
vbCrLf. Auch sie repräsentieren Zahlen, die aber nicht so einprägsam sind
wie die Namen der Konstanten.
Im folgenden Beispiel werden mehrere Konstanten vereinbart und genutzt
(Projekt Konstanten).
Public Class Form1Private Const MaxWert = 75Private Const Eintrag = "Picture"
Private Sub cmdKonstanten_Click(...) Handles ...Const MaxWert = 55Const MinWert = 5lblAnzeige.Text = (MaxWert - MinWert) / 2 &
vbCrLf & EintragEnd Sub
End Class
Listing 2.3 Projekt »Konstanten«
Zur Erläuterung:
Const� Konstanten werden mithilfe des Schlüsselworts Const definiert.
� Die Konstanten MaxWert und Eintrag werden mit klassenweiter Gültig-
keit festgelegt.
� Innerhalb der Prozedur werden die beiden lokalen Konstanten MaxWert
und MinWert festgelegt. MaxWert blendet die klassenweit gültige Kon-
stante gleichen Namens aus, wie es in unten stehender Abbildung 2.7 zu
sehen ist.
� Außerdem kommt noch die integrierte Konstante vbCrLf zum Ein-
satz.
Abbildung 2.7 Konstanten
3703.book Seite 49 Donnerstag, 3. September 2015 2:52 14
2 Grundlagen
50
2.1.6 Enumerationen
Konstanten
aufzählen
Enumerationen sind Aufzählungen von Konstanten, die thematisch zu-
sammengehören. Alle Enumerationen haben den gleichen Datentyp, der
ganzzahlig sein muss. Bei der Deklaration werden ihnen Werte zugewiesen,
am besten explizit.
Innerhalb von Visual Basic gibt es zahlreiche vordefinierte Enumerationen.
Ähnlich wie bei den integrierten Konstanten sind die Namen der Enumera-
tionen und deren Elemente besser lesbar als die durch sie repräsentierten
Zahlen.
Ein Beispiel: Die Enumeration DialogResult ermöglicht es Ihnen als Pro-
grammierer, die zahlreichen möglichen Antworten des Benutzers beim
Einsatz von Windows-Standarddialogfeldern (Ja, Nein, Abbrechen, Wie-
derholen, Ignorieren, ...) anschaulich einzusetzen.
Im folgenden Programm wird mit einer eigenen und einer vordefinierten
Enumeration gearbeitet (ebenfalls im Projekt Konstanten).
Public Class Form1[...]
Private Enum Zahl As IntegerEins = 1Zwei = 2Drei = 3Vier = 4
End Enum[...]
Private Sub cmdEnumeration1_Click(...) Handles ...lblAnzeige.Text = Zahl.Zwei * Zahl.Drei
End Sub
Private Sub cmdEnumeration2_Click(...) Handles ...lblAnzeige.Text = "Sonntag: " & FirstDayOfWeek.Sunday &
", Samstag: " & FirstDayOfWeek.SaturdayEnd Sub
End Class
Listing 2.4 Projekt »Konstanten«, Teil 2
3703.book Seite 50 Donnerstag, 3. September 2015 2:52 14
2.2 Operatoren
51
2
Zur Erläuterung:
Enum� Enumerationen werden mithilfe des Schlüsselworts Enum definiert.
� Es wird die Enumeration Zahl vom Datentyp Integer vereinbart. Da es
sich um einen Typ handelt und nicht um eine Variable oder Konstante,
muss sie außerhalb von Prozeduren vereinbart werden. Damit ist sie
automatisch für die gesamte Klasse gültig.
� In der ersten Ereignisprozedur werden zwei Elemente der eigenen Enu-
meration Zahl verwendet. Die beiden Zahlen, die sie repräsentieren, wer-
den miteinander multipliziert, siehe Abbildung 2.8.
Abbildung 2.8 Erste Enumeration
� In der zweiten Ereignisprozedur werden zwei Elemente der vordefinier-
ten Enumeration FirstDayOfWeek verwendet, siehe Abbildung 2.9. Sie
können sie zur Ermittlung des Wochentags eines gegebenen Datums
verwenden.
Abbildung 2.9 Zweite Enumeration
2.2 Operatoren
Zum Zusammensetzen von Ausdrücken nutzt Visual Basic, wie jede andere
Programmiersprache auch, Operatoren. In diesem Buch wurden schon die
Operatoren = für Zuweisungen und & für Verkettungen verwendet.
PrioritätEs gibt verschiedene Kategorien von Operatoren. Vorrangregeln (Prioritä-
ten) sind für die Reihenfolge der Abarbeitung zuständig, falls mehrere Ope-
ratoren innerhalb eines Ausdrucks eingesetzt werden. Diese Vorrangregeln
sind weiter unten in diesem Abschnitt angegeben. Falls Sie sich bei der Ver-
3703.book Seite 51 Donnerstag, 3. September 2015 2:52 14
2 Grundlagen
52
wendung dieser Regeln nicht sicher sind, empfiehlt es sich, durch eigene
Klammersetzung die Reihenfolge explizit festzulegen.
2.2.1 Rechenoperatoren
Rechenoperatoren Rechenoperatoren dienen zur Durchführung von Berechnungen, siehe Ta-
belle 2.1.
Ganzzahldivision Die Ganzzahldivision erfolgt in zwei Schritten. Im ersten Schritt werden Di-
vidend und Divisor einzeln gerundet. Im zweiten Schritt werden die beiden
verbliebenen Zahlen geteilt, anschließend werden die Ziffern nach dem
Komma abgeschnitten.
Tabelle 2.2 zeigt einige Beispiele.
Modulo Der Modulo-Operator Mod berechnet den Rest einer Division. Zwei Beispiele
sehen Sie in Tabelle 2.3.
Operator Beschreibung
+ Addition
- Subtraktion oder Negation
* Multiplikation
/ Division
\ Ganzzahldivision
^ Potenzierung
Mod Modulo
Tabelle 2.1 Rechenoperatoren
Ausdruck Ergebnis
19 / 4 4.75
19 \ 4 4
19 \ 4.6 3
19.5 \ 4.2 5
Tabelle 2.2 Ganzzahldivision
3703.book Seite 52 Donnerstag, 3. September 2015 2:52 14
2.2 Operatoren
53
2
Zur Potenzierung einer Zahl dient der Operator ^ (hoch), Beispiele siehe Ta-
belle 2.4.
Multiplikation und Division innerhalb eines Ausdrucks sind gleichrangig
und werden von links nach rechts in der Reihenfolge ihres Auftretens aus-
gewertet. Dasselbe gilt für Additionen und Subtraktionen, die zusammen
in einem Ausdruck auftreten. Multiplikation und Division werden vor Ad-
dition und Subtraktion ausgeführt.
KlammernMit Klammern können Sie diese Rangfolge außer Kraft setzen, damit be-
stimmte Teilausdrücke vor anderen Teilausdrücken ausgewertet werden.
In Klammern gesetzte Operationen haben grundsätzlich Vorrang. Inner-
halb der Klammern gilt jedoch die normale Rangfolge der Operatoren.
ProjektAlle Berechnungen innerhalb dieses Abschnitts können Sie auch mithilfe
des Codes im Projekt Rechenoperatoren nachvollziehen.
Übung
Übung ÜRechen-
operatoren
Berechnen Sie die beiden folgenden Ausdrücke, speichern Sie das Ergebnis
in einer Variablen eines geeigneten Datentyps und zeigen Sie es an:
� 1. Ausdruck: 3 * –2.5 + 4 * 2
� 2. Ausdruck: 3 * (-2.5 + 4) * 2
Ausdruck Ergebnis Erklärung
19 Mod 4 3 19 durch 4 ist 4 Rest 3
19.5 Mod 4.2 2.7 19,5 durch 4,2 ist 4 Rest 2,7
Tabelle 2.3 Modulo-Operator
Ausdruck Ergebnis
2 ^ 5 32
3 ^ 2 ^ 3 729
2 ^ 5.4 42.2242531447326
(-2) ^ 5 -32
Tabelle 2.4 Potenzierung
3703.book Seite 53 Donnerstag, 3. September 2015 2:52 14
2 Grundlagen
54
2.2.2 Vergleichsoperatoren
Vergleich Vergleichsoperatoren (siehe Tabelle 2.5) dienen dazu festzustellen, ob be-
stimmte Bedingungen zutreffen oder nicht. Das Ergebnis lässt sich u. a. zur
Ablaufsteuerung von Programmen nutzen. Abschnitt 2.4 geht hierauf ge-
nauer ein.
Einige Beispiele sehen Sie in Tabelle 2.6.
Like Darüber hinaus gibt es noch den Operator Like, der zum Mustervergleich
dient. Dabei können Sie u. a. die Platzhalter * (eines oder mehrere Zeichen)
und ? (genau ein Zeichen) einsetzen. Tabelle 2.7 zeigt einige Beispiele.
Operator Beschreibung
< kleiner als
<= kleiner als oder gleich
> größer als
>= größer als oder gleich
= gleich
<> ungleich
Tabelle 2.5 Vergleichsoperatoren
Ausdruck Ergebnis
5 > 3 True
3 = 3.2 False
5 + 3 * 2 >= 12 False
Tabelle 2.6 Nutzung von Vergleichsoperatoren
Ausdruck Ergebnis
"abxba" Like "a*a" True
"abxba" Like "a?a" False
Tabelle 2.7 Mustervergleich
3703.book Seite 54 Donnerstag, 3. September 2015 2:52 14
2.2 Operatoren
55
2
ProjektAlle Vergleiche innerhalb dieses Abschnitts können Sie auch mithilfe des
Codes im Projekt Vergleichsoperatoren nachvollziehen.
Übung
Übung ÜVergleichs-
operatoren
Ermitteln Sie das Ergebnis der beiden folgenden Ausdrücke, speichern Sie
es in einer Variablen eines geeigneten Datentyps und zeigen Sie es an:
� 1. Ausdruck: 12 – 3 >= 4 * 2.5
� 2. Ausdruck: "Maier" Like "M??er"
2.2.3 Logische Operatoren
LogikLogische Operatoren dienen dazu, mehrere Bedingungen zusammenzufas-
sen. Das Ergebnis lässt sich ebenfalls u. a. zur Ablaufsteuerung von Pro-
grammen nutzen (siehe hierzu auch Abschnitt 2.4). Die logischen
Operatoren sehen Sie in Tabelle 2.8.
Es seien die Variablen A = 1, B = 3 und C = 5 gesetzt. Die Ausdrücke in der ers-
ten Spalte von Tabelle 2.9 ergeben dann jeweils die Ergebnisse in der zwei-
ten Spalte.
"aba" Like "a?a" True
"asdlfigc" Like "a?d?f*c" True
Ausdruck Ergebnis
Tabelle 2.7 Mustervergleich (Forts.)
Operator Beschreibung Das Ergebnis ist True, wenn ...
Not Nicht ... der Ausdruck False ist.
And Und ... beide Ausdrücke True sind.
Or Inklusives Oder ... mindestens ein Ausdruck True ist.
Xor Exklusives Oder ... genau ein Ausdruck True ist.
Tabelle 2.8 Logische Operatoren
3703.book Seite 55 Donnerstag, 3. September 2015 2:52 14
2 Grundlagen
56
Projekt Alle Berechnungen innerhalb dieses Abschnitts können Sie auch mithilfe
des Codes im Projekt LogischeOperatoren nachvollziehen.
Übung
Übung ÜLogische
Operatoren
Ermitteln Sie das Ergebnis der beiden folgenden Ausdrücke, speichern Sie
es in einer Variablen eines geeigneten Datentyps und zeigen Sie es an:
� 1. Ausdruck: 4 > 3 And –4 > –3
� 2. Ausdruck: 4 > 3 Or –4 > –3
2.2.4 Verkettungsoperator
Umwandlung
in String
Der Operator & dient der Verkettung von Zeichenfolgen. Ist einer der Aus-
drücke keine Zeichenfolge, sondern eine Zahl oder Datumsangabe, wird er
in einen String verwandelt. Das Gesamtergebnis ist dann wiederum eine
Zeichenfolge. Beispiel:
Public Class Form1Private Sub cmdAnzeige_Click(...) Handles ...
Dim gesamt As StringDim s As SingleDim i As IntegerDim d As Dates = 4.6i = -12d = "18.07.2015"gesamt = "Hallo " & s & " " & i & " " & dlblAnzeige.Text = gesamt
End SubEnd Class
Listing 2.5 Projekt »Verkettungsoperator«
Ausdruck Ergebnis
Not (A < B) False
(B > A) And (C > B) True
(B < A) Or (C < B) False
(B < A) Xor (C > B) True
Tabelle 2.9 Ausdrücke mit logischen Operatoren
3703.book Seite 56 Donnerstag, 3. September 2015 2:52 14
2.2 Operatoren
57
2
Das Ergebnis ist in Abbildung 2.10 zu sehen. Ein weiteres Beispiel stand be-
reits in Abschnitt 1.5.5.
Abbildung 2.10 Verkettung
2.2.5 Zuweisungsoperatoren
Zeichen =Der einfachste Zuweisungsoperator, das Gleichheitszeichen, wurde bereits
genutzt. Es gibt zur Verkürzung von Anweisungen noch einige weitere Zu-
weisungsoperatoren, siehe Tabelle 2.10.
2.2.6 Rangfolge der Operatoren
PrioritätEnthält ein Ausdruck mehrere Operationen, werden die einzelnen Teilaus-
drücke in einer bestimmten Rangfolge ausgewertet und aufgelöst, die als
Rangfolge bzw. Priorität der Operatoren bezeichnet wird. Es gilt die Rang-
folge in Tabelle 2.11.
Operator Beispiel Ergebnis
= x = 7 x erhält den Wert 7.
+= x += 5 Der Wert von x wird um 5 erhöht.
-= x -= 5 Der Wert von x wird um 5 verringert.
*= x *= 3 Der Wert von x wird auf das Dreifache erhöht.
/= x /= 3 Der Wert von x wird auf ein Drittel verringert.
\= x \= 3 Der Wert von x wird auf ein Drittel verringert.
Nachkommastellen werden abgeschnitten.
^= x ^= 3 Der Wert von x wird auf x hoch 3 erhöht.
&= z &= "abc" Die Zeichenkette z wird um den Text abc ver-
längert.
Tabelle 2.10 Zuweisungsoperatoren
3703.book Seite 57 Donnerstag, 3. September 2015 2:52 14
2 Grundlagen
58
Die Operatoren, die in der Tabelle weiter oben stehen, haben die höchste
Priorität.
Klammern Wie schon bei den Rechenoperatoren erwähnt: Mit Klammern können Sie
diese Rangfolge außer Kraft setzen, damit bestimmte Teilausdrücke vor an-
deren Teilausdrücken ausgewertet werden.
In Klammern gesetzte Operationen haben grundsätzlich Vorrang. Inner-
halb der Klammern gilt jedoch wieder die normale Rangfolge der Opera-
toren.
Übung
Übung ÜOperatoren Sind die Bedingungen in Tabelle 2.12 wahr oder falsch? Lösen Sie die Auf-
gabe möglichst ohne PC.
Operator Beschreibung
^ Exponentialoperator
- negatives Vorzeichen
*, / Multiplikation, Division
\ Ganzzahldivision
Mod Modulo
+, - Addition, Subtraktion
& Verkettung
=, <>, <, >, <=, >=, Like
Vergleichsoperatoren (Das Zeichen = steht für den Vergleich, nicht für die Zuweisung.)
Not logisches Nicht
And logisches Und
Or logisches Oder
Tabelle 2.11 Rangfolge der Operatoren
Nr. Werte Bedingung
1 a=5 b=10 a>0 And b<>10
2 a=5 b=10 a>0 Or b<>10
Tabelle 2.12 Übung ÜOperatoren
3703.book Seite 58 Donnerstag, 3. September 2015 2:52 14
2.3 Einfache Steuerelemente
59
2
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 an-
schauliche Praxis vertieft werden können.
Daher wird in diesem Abschnitt mit vier weiteren Steuerelementen ge-
arbeitet, bevor im nächsten Abschnitt die Verzweigungen zur Pro-
grammsteuerung vorgestellt werden: Panel, Zeitgeber, Textfeld und
Zahlenauswahlfeld.
2.3.1 Panel
ContainerEin 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.
3 z=10 w=100 z<>0 Or z>w Or w-z=90
4 z=10 w=100 z=11 And z>w Or w-z=90
5 x=1.0 y=5.7 x>=.9 And y<=5.8
6 x=1.0 y=5.7 x>=.9 And Not(y<=5.8)
7 n1=1 n2=17 n1>0 And n2>0 Or n1>n2 And n2<>17
8 n1=1 n2=17 n1>0 And (n2>0 Or n1>n2) And n2<>17
Nr. Werte Bedingung
Tabelle 2.12 Übung ÜOperatoren (Forts.)
3703.book Seite 59 Donnerstag, 3. September 2015 2:52 14
2 Grundlagen
60
In Abbildung 2.11 und Abbildung 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 Form1Private 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
3703.book Seite 60 Donnerstag, 3. September 2015 2:52 14
2.3 Einfache Steuerelemente
61
2
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
TimerEin Zeitgeber (engl.: Timer) erzeugt in festgelegten Abständen Zeittakte.
Diese Zeittakte sind Ereignisse, die Sie als Entwickler mit Aktionen verbin-
den können. Das zugehörige Ereignis heißt Tick. Ein Zeitgeber kann wie je-
des 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.
IntervallSeine wichtigste Eigenschaft ist das Zeitintervall, in dem das Ereignis auf-
treten soll. Dieses Zeitintervall wird in Millisekunden angegeben.
EnabledDie Eigenschaft Enabled dient der Aktivierung bzw. Deaktivierung des Zeit-
gebers. 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, erscheint ein x
in einem Bezeichnungsfeld. Alle 0,5 Sekunden erscheint automatisch ein
weiteres x, siehe Abbildung 2.13. Das wird durch den Timer gesteuert, bei
dem der Wert für die Eigenschaft Interval auf 500 gesetzt wurde. Nach Be-
tätigung des Stop-Buttons kommt kein weiteres x hinzu.
Abbildung 2.13 Nach einigen Sekunden
3703.book Seite 61 Donnerstag, 3. September 2015 2:52 14
2 Grundlagen
62
Der zugehörige Code:
Public Class Form1Private 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 SubEnd Class
Listing 2.7 Projekt »Zeitgeber«
Übung
Übung ÜPanel-
Zeitgeber
Erstellen Sie eine Windows-Anwendung. In der Mitte eines Formulars sol-
len zu Beginn vier Panels verschiedener Farbe der Größe 20 × 20 Pixel plat-
ziert werden, siehe Abbildung 2.14.
Abbildung 2.14 Startzustand
Sobald der Start-Button betätigt wird, 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.
3703.book Seite 62 Donnerstag, 3. September 2015 2:52 14
2.3 Einfache Steuerelemente
63
2
Abbildung 2.15 Nach einigen Sekunden
Übung
Übung ÜKranDiese Übung gehört nicht zum Pflichtprogramm. Sie ist etwas umfangrei-
cher, verdeutlicht aber die Möglichkeiten einer schnellen Visualisierung
von Prozessen durch Visual Basic mit wenigen Programmzeilen.
Konstruieren Sie aus mehreren Panels einen Kran (Fundament, senkrech-
tes Hauptelement, waagerechter Ausleger, senkrechter Haken am Ausle-
ger). Der Benutzer soll die Möglichkeit haben, über insgesamt 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 (Eigenschaf-
ten 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 Proble-
men später noch abhelfen.
3703.book Seite 63 Donnerstag, 3. September 2015 2:52 14
2 Grundlagen
64
Abbildung 2.16 Startzustand
Abbildung 2.17 Nach einigen Aktionen
2.3.3 Textfelder
Eingabefeld Ein Textfeld dient in erster Linie dazu, die Eingabe von Text oder Zahlen
vom Benutzer entgegenzunehmen. Diese Eingaben werden in der Eigen-
schaft Text des Textfelds gespeichert. Das Aussehen und das Verhalten ei-
nes Textfelds werden u. a. durch folgende Eigenschaften gekennzeichnet:
� MultiLine: Steht MultiLine auf True, kann bei der Eingabe und bei der
Anzeige mit mehreren Textzeilen gearbeitet werden.
� ScrollBars: Ein Textfeld lässt sich mit vertikalen und/oder horizontalen
Bildlaufleisten zur Eingabe und Anzeige längerer Texte versehen.
3703.book Seite 64 Donnerstag, 3. September 2015 2:52 14
2.3 Einfache Steuerelemente
65
2
� 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.
Passwort� PasswordChar: Falls für diese Eigenschaft im Entwurfsmodus ein Platz-
halterzeichen 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 (z. B. (Strg) + (C)
und (Strg) + (V)) 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 Aus-
gabe wird der eingegebene Text in einem zusammenhängenden Satz aus-
gegeben, siehe Abbildung 2.18.
Abbildung 2.18 Eingabe in Textfeld
Der Code lautet wie folgt:
Public Class Form1Private Sub cmdAusgabe_Click(...) Handles ...
lblAusgabe.Text = "Sie haben '" & txtEingabe.Text &"' eingegeben"
End SubEnd Class
Listing 2.8 Projekt »Textfelder«
Zur Erläuterung:
� Die Eigenschaft Text des Textfelds speichert die Eingabe. Die Eigenschaft
wird in einen längeren Ausgabetext eingebettet.
3703.book Seite 65 Donnerstag, 3. September 2015 2:52 14
2 Grundlagen
66
Zahlen eingeben 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.
Private Sub cmdRechnen1_Click(...) Handles ...lblAusgabe.Text = txtEingabe.Text * 2
End Sub
Listing 2.9 Projekt »Textfelder«, Zahleneingabe
Zur Erläuterung:
� Wenn eine Zeichenkette eingegeben wird, 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. Das wird mög-
lich, sobald Sie Verzweigungen zur Programmsteuerung beherr-
schen.
Ausnahme-
behandlung
– Allgemein können Sie Programme so schreiben, dass ein Programm-
abbruch abgefangen werden kann. Das wird möglich, sobald Sie die
Ausnahmebehandlung (siehe hierzu Kapitel 3) beherrschen.
Einige Beispiele:
Abbildung 2.19 zeigt die Eingabe einer Zahl mit Nachkommastellen.
Abbildung 2.19 Eingabe einer Zahl mit Nachkommastellen
Debugging beenden Die Eingabe einer Zeichenkette, z. B. abc, führt zur Anzeige einer nicht be-
handelten Ausnahme. Die Zeile, in der der Fehler auftritt, wird im Code
markiert, damit der Fehler beseitigt werden kann (siehe Abbildung 2.20).
3703.book Seite 66 Donnerstag, 3. September 2015 2:52 14
2.3 Einfache Steuerelemente
67
2
Abbildung 2.20 Anzeige des Fehlers
Es erscheint ein zusätzliches Dialogfeld. Darin können Sie den Button Wei-
ter betätigen, dann wird das Programm beendet. Mit dem Button Unter-
brechen wird das Programm unterbrochen. Bei einem unterbrochenen
Programm können Sie die aktuellen Werte von Variablen kontrollieren, in-
dem Sie die Maus über dieser Variablen platzieren. Anschließend muss das
Programm über den Menüpunkt Debuggen • Debugging beenden been-
det werden, bevor es sich neu starten lässt.
Die Eingabe einer Zahl, bei der ein Punkt statt einem Komma zur Abtren-
nung von Nachkommastellen eingegeben wird, führt zu einem ganz ande-
ren 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
ToDouble()Sie sollten dafür sorgen, dass der Inhalt des Textfelds explizit in eine Zahl
(mit möglichen Nachkommastellen) umgewandelt wird. Das 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.
Private Sub cmdRechnen2_Click(...) Handles ...lblAusgabe.Text = Convert.ToDouble(txtEingabe.Text) * 2
End Sub
Listing 2.10 Projekt »Textfelder«, Methode ToDouble()
3703.book Seite 67 Donnerstag, 3. September 2015 2:52 14
2 Grundlagen
68
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
NumericUpDown Das Steuerelement Zahlenauswahlfeld (NumericUpDown) bietet eine andere
Möglichkeit, Zahlenwerte an ein Programm zu übermitteln. Die Zahlen-
werte können innerhalb selbst gewählter Grenzen und in selbst definierten
Schritten über zwei kleine Pfeiltasten ausgewählt werden. Sie können aber
auch weiterhin eingegeben werden, wie bei einem Textfeld.
Wichtige Eigenschaften des Steuerelements sind die folgenden:
Value � 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 kleinst-
mö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 stellt die Schrittweite ein, 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.
ValueChanged 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 ZahlenAufAb 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 Zahlen-
auswahlfeld einstellen. Der ausgewählte Wert wird unmittelbar in einem
Label angezeigt, siehe Abbildung 2.22.
3703.book Seite 68 Donnerstag, 3. September 2015 2:52 14
2.4 Verzweigungen
69
2
Abbildung 2.22 Zahlenauswahlfeld
Die Eigenschaften werden zur Entwicklungszeit wie folgt eingestellt:
� Value: Wert 2, die Anwendung startet also bei dem Wert 2,0 für das Zah-
lenauswahlfeld
� Maximum, Minimum: Werte -5 und +5
� Increment: Wert 0,1
� DecimalPlaces: Wert 1, zur Anzeige einer einzelnen Nachkommastelle
Der Code lautet:
Public Class Form1Private Sub numEingabe_ValueChanged(...) _
Handles numEingabe.ValueChangedlblAusgabe.Text = numEingabe.Value
End SubEnd Class
Listing 2.11 Projekt »ZahlenAufAb«
2.4 Verzweigungen
Der Programmcode wurde bisher rein sequenziell abgearbeitet, d. h. eine
Anweisung nach der anderen. Kontrollstrukturen ermöglichen eine Steue-
rung dieser Reihenfolge. Die Kontrollstrukturen unterteilen sich in Ver-
zweigungen und Schleifen. Verzweigungen gestatten dem Programm, in
verschiedene alternative Anweisungsblöcke zu verzweigen.
Es gibt die beiden Verzweigungsstrukturen If ... Then ... Else und Select
Case ... Diese Auswahlmöglichkeiten übergeben u. a. aufgrund von Bedin-
gungen die Programmausführung an einen bestimmten Anweisungs-
block. Bedingungen erstellen Sie mithilfe der bereits vorgestellten
Vergleichsoperatoren.
Seltener genutzt werden außerdem noch die Auswahlfunktionen IIf()
und Choose().
3703.book Seite 69 Donnerstag, 3. September 2015 2:52 14
2 Grundlagen
70
2.4.1 Einzeiliges If ... Then ... Else
Das einzeilige If ... Then ... Else hat folgenden Aufbau:
If Bedingung Then Anweisungen1 [ Else Anweisungen2 ]
If ... Then ... Else Die Bedingung wird ausgewertet, sie ist entweder wahr oder falsch (True
oder False). Ist das Ergebnis der Auswertung True, wird der Then-Teil mit
den Anweisungen1 ausgeführt. Ist das Ergebnis der Auswertung False und
gibt es einen Else-Teil, wird der Else-Teil mit den Anweisungen2 ausgeführt.
Dabei kann es sich sowohl um eine einzelne Anweisung als auch um meh-
rere Anweisungen handeln, die dann durch einen Doppelpunkt (:) vonein-
ander getrennt sind. In jedem Fall muss der gesamte Block in einer Zeile
untergebracht werden. If-Strukturen können auch ineinander verschach-
telt werden.
Unterstrich Im nachfolgenden Programm im Projekt EinzeiligesIf wird das einzeilige If
in vier verschiedenen Beispielen genutzt. Beachten Sie dabei, dass die ein-
zelnen Anweisungen zu lang für den Druck in diesem Buch sind und daher
auf mehrere Zeilen verteilt werden, teilweise auch mithilfe des Zeichens _
(Unterstrich). Es handelt sich aber in jedem Fall um einzeilige If-Verzwei-
gungen.
Public Class Form1Private Sub cmdAnzeige1_Click(...) Handles ...
Dim x As Integerx = -1If x < 0 Then lblAnz1.Text = "Negativ"
End Sub
Private Sub cmdAnzeige2_Click(...) Handles ...Dim x As Integerx = -1If x > 0 Then lblAnz2.Text = "Positiv" _
Else lblAnz2.Text = "Negativ oder Null"End Sub
Private Sub cmdAnzeige3_Click(...) Handles ...Dim x As Integerx = -1If x > 0 Then lblAnz3.Text = "Positiv" Else If x = 0 Then _
3703.book Seite 70 Donnerstag, 3. September 2015 2:52 14
2.4 Verzweigungen
71
2
lblAnz3.Text = "Null" Else lblAnz3.Text = "Negativ"End Sub
Private Sub cmdAnzeige4_Click(...) Handles ...Dim x As Integerx = -1If x > 0 Then x = x + 1 : lblAnz4.Text =
"Positiv, x = " & x Else x = x - 1 : lblAnz4.Text ="Negativ oder Null, x = " & x
End SubEnd Class
Listing 2.12 Projekt »EinzeiligesIf«
Zur Erläuterung:
� Die Integer-Variable x erhält jeweils den Wert -1. Für die Tests in den ein-
zelnen Beispielen sollten Sie diesen Wert natürlich auch einmal ändern.
� Beim ersten Beispiel wird nur etwas angezeigt, falls die Variable x nega-
tiv ist.
� Beim zweiten Beispiel wird in jedem Fall etwas angezeigt.
� Beim dritten Beispiel wird für den Fall, dass die Variable x nicht positiv
ist, eine weitere Verzweigung durchlaufen. Man nennt diese Verzwei-
gung auch eine innere Verzweigung, im Gegensatz zu einer äußeren
Verzweigung. Ist die Variable x = 0, wird wegen der inneren Verzweigung
Null angezeigt, anderenfalls wird Negativ angezeigt.
� Beim vierten Beispiel werden für beide möglichen Fälle jeweils zwei
Anweisungen durchlaufen, die durch einen : (Doppelpunkt) voneinan-
der getrennt sind.
In Abbildung 2.23 sehen Sie die Ausgabe nach Betätigung aller vier Buttons.
Abbildung 2.23 Einzeiliges If
3703.book Seite 71 Donnerstag, 3. September 2015 2:52 14
2 Grundlagen
72
2.4.2 If...Then...Else-Block
Mehrzeilig, Block Für einfache Entscheidungen und einzelne Anweisungen eignet sich das
einzeilige If. Sobald mehrere Anweisungen auszuführen sind, wird der
Programmcode schnell unübersichtlich. Für diese Zwecke ist ein
If...Then...Else-Block wesentlich besser geeignet. Der Block hat folgen-
den Aufbau:
If Bedingung1 ThenAnweisungen1
[ ElseIf Bedingung2Anweisungen2 ] ...
[ ElseAnweisungenX ]
End If
Das Programm verzweigt zu den Anweisungen hinter der ersten zutreffen-
den Bedingung. Falls keine Bedingung zutrifft, werden die Anweisungen
hinter dem Else ausgeführt, sofern es diesen Else-Zweig gibt. Anderenfalls
wird keine Anweisung durchgeführt. Ein If...Then...Else-Block endet
immer mit einem End If.
Das nachfolgende Programm im Projekt BlockIf prüft vier verschiedene
Fälle. Trifft keiner dieser Fälle zu, wird der Else-Zweig ausgeführt:
Public Class Form1Private Sub cmdAnzeige_Click(...) Handles ...
Dim x, y As Integerx = 0y = 0If x >= 0 And y >= 0 Then
lblAnzeige.Text = "Beide größer oder gleich Null"ElseIf x >= 0 And y < 0 Then
lblAnzeige.Text = "Nur X größer oder gleich Null"ElseIf x < 0 And y >= 0 Then
lblAnzeige.Text = "Nur Y größer oder gleich Null"ElseIf x >= 0 Then
lblAnzeige.Text = "Wird nie angezeigt"Else
lblAnzeige.Text = "Beide kleiner Null"End If
3703.book Seite 72 Donnerstag, 3. September 2015 2:52 14
2.4 Verzweigungen
73
2
End SubEnd Class
Listing 2.13 Projekt »BlockIf«
In Abbildung 2.24 sehen Sie die Ausgabe nach Betätigung des Buttons.
Abbildung 2.24 If...Then...Else-Block
2.4.3 Select Case
MehrfachauswahlEine Verzweigung kann in bestimmten Fällen auch mit Select Case ... ge-
bildet werden. Diese Struktur vereinfacht eine Mehrfachauswahl, wenn
nur ein Wert untersucht werden muss, und ist wie folgt aufgebaut:
Select Case Testausdruck[ Case Ausdrucksliste1
Anweisungen1 ][ Case Ausdrucksliste2
Anweisungen2 ] ...[ Case Else
AnweisungenX ]End Select
To, IsDie Struktur Select Case ... verwendet nur einen Testausdruck, der am Be-
ginn der Struktur ausgewertet wird. Sein Wert wird anschließend der Reihe
nach mit den Werten der Ausdruckslisten verglichen. Eine Ausdrucksliste
kann aus mehreren Ausdrücken oder einer Bereichsangabe mit dem
Schlüsselwort To bestehen. Ein Ausdruck kann aus einem Wert oder einer
Bedingung mit dem Schlüsselwort Is bestehen.
End SelectBei der ersten Übereinstimmung wird der zugehörige Anweisungsblock
ausgeführt und dann wird mit der nächsten Anweisung hinter dem End Se-
lect fortgefahren.
Case ElseDer optionale Anweisungsblock hinter dem Case Else wird ausgeführt, falls
vorher keine Übereinstimmung gefunden wurde. Das nachfolgende Pro-
3703.book Seite 73 Donnerstag, 3. September 2015 2:52 14
2 Grundlagen
74
gramm im Projekt SelectCase prüft ebenfalls vier verschiedene Fälle. Trifft
keiner dieser Fälle zu, wird der Case-Else-Zweig ausgeführt:
Public Class Form1Private Sub cmdAnzeige_Click(...) Handles ...
Dim x As Integerx = 20Select Case x
Case 1, 3, 5, 7, 9lblAnzeige.Text = "Ungerade, Einstellig"
Case 2, 4, 6, 8lblAnzeige.Text = "Gerade, Einstellig"
Case Is < 1, Is > 20lblAnzeige.Text = "Kleiner 1 oder größer 20"
Case 10 To 15lblAnzeige.Text = "Größer gleich 10 und" &
" kleiner gleich 15"Case Else
lblAnzeige.Text = "Größer 15 und kleiner 21"End Select
End SubEnd Class
Listing 2.14 Projekt »SelectCase«
In diesem Beispiel sind nur die Zahlen größer 15 und kleiner 21 in keiner
Ausdrucksliste enthalten. Der entsprechende Text befindet sich also im
Case-Else-Zweig, wie Sie in Abbildung 2.25 sehen.
Abbildung 2.25 Auswahl mit Select ... Case
2.4.4 Funktion IIf
Liefert Wert Die Funktion IIf() ähnelt dem einzeiligen If ... Then ... Else, liefert aber
im Unterschied zu diesem direkt einen Wert zurück. Ihre Syntax lautet:
IIf(Bedingung, True-Ausdruck, False-Ausdruck)
3703.book Seite 74 Donnerstag, 3. September 2015 2:52 14
2.4 Verzweigungen
75
2
Sowohl True-Ausdruck als auch False-Ausdruck müssen angegeben wer-
den. Im nachfolgenden Programm im Projekt FunktionIIf wird das Maxi-
mum der beiden Zahlen x und y ermittelt und ausgegeben:
Public Class Form1Private Sub cmdAnzeige_Click(...) Handles ...
Dim x, y As Integerx = 5y = 3lblAnzeige.Text = IIf(x > y, x, y)
End SubEnd Class
Listing 2.15 Projekt »FunktionIIf«
2.4.5 Funktion Choose
Wert aus ListeDie Funktion Choose() gibt den Wert aus einer Liste zurück, dessen Position
dem Indexwert entspricht. Die Positionen in der Liste beginnen allerdings
bei 1, nicht bei 0. Die Syntax lautet:
Choose(Index, Ausdruck1, [Ausdruck2] ...)
Im nachfolgenden Programm im Projekt FunktionChoose wird eine Wäh-
rung aus einer Liste von Währungen ausgewählt und ausgegeben:
Public Class Form1Private Sub cmdAnzeige_Click(...) Handles ...
Dim x As Integerx = 2lblAnzeige.Text = Choose(x, "US Dollar", "Pfund", "Euro")
End SubEnd Class
Listing 2.16 Projekt »FunktionChoose«
Zur Erläuterung:
� Der Wert x = 2 führt zur Ausgabe von Pfund.
3703.book Seite 75 Donnerstag, 3. September 2015 2:52 14
2 Grundlagen
76
2.4.6 Übungen
Übung ÜSteuerbetrag
Übung ÜSteuer-
betrag
Schreiben Sie ein Programm, das zu einem eingegebenen Gehalt den Steu-
erbetrag berechnet und ausgibt, siehe Abbildung 2.26. In Tabelle 2.13 sind
die Steuersätze angegeben. Es wird davon ausgegangen, dass das gesamte
Gehalt zum angegebenen Satz versteuert wird. Erstellen Sie das Programm
in zwei Versionen: mithilfe von If Else beziehungsweise mithilfe von
Select Case.
Abbildung 2.26 Übung ÜSteuerbetrag
Übung ÜKranVerzweigung
Übung ÜKran-
Verzweigung
Erweitern Sie die Übung ÜKran. Die Bewegung des Krans soll kontrolliert
werden. Kein Teil des Krans darf zu groß oder zu klein werden. Der Kran
darf sich nicht über die sinnvollen Begrenzungen hinausbewegen. Nutzen
Sie Bedingungen und Verzweigungen, um das zu verhindern.
2.5 Verzweigungen und Steuerelemente
In diesem Abschnitt geht es um Kontrollkästchen und Optionsschaltflä-
chen bzw. Gruppen von Optionsschaltflächen. Damit können Sie Zustände
Gehalt Steuersatz
von 0 € bis einschließlich 12.000 € 12 %
von über 12.000 € bis einschließlich 20.000 € 15 %
von über 20.000 € bis einschließlich 30.000 € 20 %
über 30.000 € 25 %
Tabelle 2.13 Übung ÜSteuerbetrag
3703.book Seite 76 Donnerstag, 3. September 2015 2:52 14
2.5 Verzweigungen und Steuerelemente
77
2
unterscheiden bzw. Eigenschaften einstellen. Dazu benötigen Sie Verzwei-
gungen, die Gegenstand des vorherigen Abschnitts waren.
2.5.1 Kontrollkästchen
CheckBoxDas Kontrollkästchen (CheckBox) bietet dem Benutzer die Möglichkeit,
zwischen zwei Zuständen zu wählen, z. B. An oder Aus, wie bei einem Schal-
ter. Sie können damit auch kennzeichnen, ob Sie eine bestimmte optionale
Erweiterung wünschen oder nicht. Der Benutzer bedient ein Kontrollkäst-
chen, indem er ein Häkchen setzt oder entfernt.
CheckedChangedDas wichtigste Ereignis ist beim Kontrollkästchen nicht der Click, sondern
das Ereignis CheckedChanged. Dieses Ereignis zeigt nicht nur an, dass der Be-
nutzer das Kontrollkästchen bedient hat, sondern auch, dass es seinen Zu-
stand geändert hat. Das kann beispielsweise auch durch Programmcode
geschehen. Eine Ereignisprozedur zu CheckedChanged löst in jedem Fall et-
was aus, sobald das Kontrollkästchen (vom Benutzer oder vom Programm-
code) geändert wird.
An/AusAllerdings wird der Programmablauf meist so gestaltet, dass bei einem an-
deren Ereignis der aktuelle Zustand des Kontrollkästchens (An/Aus) abge-
fragt und anschließend entsprechend reagiert wird.
Die wichtigen Eigenschaften des Kontrollkästchens sind:
Checked� Checked – der Zustand der CheckBox, mit den Werten True und False
� Text – die Beschriftung neben dem Kontrollkästchen
Das Projekt Kontrollkästchen nutzt alle oben genannten Möglichkeiten,
siehe Abbildung 2.27.
Abbildung 2.27 Zustand nach Klick auf Kontrollkästchen
3703.book Seite 77 Donnerstag, 3. September 2015 2:52 14
2 Grundlagen
78
Der Programmcode:
Public Class Form1Private Sub cmdPrüfen_Click(...) Handles ...
If chkSchalter.Checked ThenlblTest1.Text = "An"
ElselblTest1.Text = "Aus"
End IfEnd Sub
Private Sub chkSchalter_CheckedChanged(...) _Handles chkSchalter.CheckedChanged
If chkSchalter.Checked ThenlblTest2.Text = "An"
ElselblTest2.Text = "Aus"
End IfEnd Sub
Private Sub cmdUmschalten_Click(...) Handles ...chkSchalter.Checked = Not chkSchalter.Checked
End SubEnd Class
Listing 2.17 Projekt »Kontrollkästchen«
Zur Erläuterung:
� Den Zustand eines Kontrollkästchens (Häkchen gesetzt oder nicht) kön-
nen Sie im Programm mithilfe einer einfachen Verzweigung auswerten.
Wahrheitswert � 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
3703.book Seite 78 Donnerstag, 3. September 2015 2:52 14
2.5 Verzweigungen und Steuerelemente
79
2
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 aufge-
rufen, wenn der Benutzer das Kontrollkästchen benutzt, also ein Häk-
chen 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 Kon-
trollkästchens per Programmcode. Das kommt in Windows-Anwendun-
gen häufig vor, wenn es logische Zusammenhänge zwischen mehreren
Steuerelementen gibt. Die Eigenschaft Checked wird mithilfe des logi-
schen Operators Not auf True bzw. auf False gesetzt. Das führt wiederum
zum Ereignis chkSchalter_CheckedChanged und dem Ablauf der zugehöri-
gen, oben erläuterten Ereignisprozedur.
2.5.2 Optionsschaltfläche
RadioButtonOptionsschaltflächen (RadioButtons) treten immer in Gruppen auf und
bieten dem Benutzer die Möglichkeit, zwischen zwei oder mehr Möglich-
keiten zu wählen, etwa zwischen den Farben Rot, Grün oder Blau. Bei zu-
sammengehörigen Optionsschaltflächen kann der Benutzer genau eine
per Klick auswählen. Alle anderen werden dann unmittelbar als Nicht aus-
gewählt gekennzeichnet.
CheckedChangedAnalog zum Kontrollkästchen ist das wichtigste Ereignis bei einer Options-
schaltfläche CheckedChanged. Dieses Ereignis zeigt an, dass die betreffende
Optionsschaltfläche ihren Zustand geändert hat. Das kann auch durch Pro-
grammcode geschehen.
Der Programmablauf wird hier meist so gestaltet, dass bei einem anderen
Ereignis die aktuelle Auswahl innerhalb der Gruppe abgefragt wird und an-
schließ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 set-
zen. Das muss nicht notwendigerweise die erste Optionsschaltfläche der
Gruppe sein.
CheckedDie wichtigen Eigenschaften der Optionsschaltflächen sind Checked (mit
den Werten True und False) und Text (zur Beschriftung). Das nachfolgende
3703.book Seite 79 Donnerstag, 3. September 2015 2:52 14
2 Grundlagen
80
Programm im Projekt Optionen nutzt alle genannten Möglichkeiten. Es
wird der Zustand angezeigt, nachdem der Benutzer
� Blau gewählt,
� den Button Prüfen betätigt und
� Grün gewählt hat (siehe Abbildung 2.28).
Abbildung 2.28 Zustand nach den genannten Aktionen
Der Programmcode:
Public Class Form1Private Sub cmdPrüfen_Click(...) Handles ...
If optFarbeRot.Checked ThenlblAnzeige1.Text = "Rot"
ElseIf optFarbeGrün.Checked ThenlblAnzeige1.Text = "Grün"
ElselblAnzeige1.Text = "Blau"
End IfEnd Sub
Private Sub optFarbeRot_CheckedChanged(...) Handles ...If optFarbeRot.Checked Then
lblAnzeige2.Text = "Rot"End If
End Sub
Private Sub optFarbeGrün_CheckedChanged(...) Handles ...If optFarbeGrün.Checked Then
lblAnzeige2.Text = "Grün"End If
End Sub
3703.book Seite 80 Donnerstag, 3. September 2015 2:52 14
2.5 Verzweigungen und Steuerelemente
81
2
Private Sub optFarbeBlau_CheckedChanged(...) Handles ...If optFarbeBlau.Checked Then
lblAnzeige2.Text = "Blau"End If
End Sub
Private Sub cmdSchalter_Click(...) Handles ...optFarbeRot.Checked = True
End SubEnd Class
Listing 2.18 Projekt »Optionen«
Zur Erläuterung:
Auswahl oder
Abwahl
� Den Zustand einer einzelnen Optionsschaltfläche können Sie im Pro-
gramm mithilfe einer einfachen Verzweigung auswerten. Es muss
festgestellt werden, ob diese Optionsschaltfläche ausgewählt oder ab-
gewählt wurde. In beiden Fällen tritt das Ereignis CheckedChanged auf.
� Den Zustand einer Gruppe von Optionsschaltflächen können Sie im Pro-
gramm 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 der Auswahl einer bestimmten
Optionsschaltfläche per Programmcode. Das kommt in Windows-
Anwendungen häufig vor, wenn es logische Zusammenhänge zwischen
mehreren Steuerelementen gibt. Die Eigenschaft Checked wird auf True
gesetzt. Das führt wiederum zum Ereignis CheckedChanged der jeweiligen
Optionsschaltfläche und zum Ablauf der zugehörigen, oben erläuterten
Ereignisprozedur.
3703.book Seite 81 Donnerstag, 3. September 2015 2:52 14
2 Grundlagen
82
Innerhalb eines Formulars oder einer GroupBox (siehe Abschnitt 2.5.4)
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 Optionsschalt-
fläche.
2.5.3 Mehrere Ereignisse in einer Prozedur behandeln
Das folgende Projekt MehrereEreignisse stellt eine häufig verwendete Tech-
nik vor. 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.
Handles Das ist möglich, da nach dem Schlüsselwort Handles zu Beginn der Ereig-
nisprozedur mehrere Ereignisse genannt werden können. Das nachfol-
gende Programm verwendet diese Technik, um den Zustand einer Gruppe
von Optionsschaltflächen sofort anzuzeigen, wenn der Benutzer eine der
Optionsschaltflächen auswählt, siehe Abbildung 2.29.
Abbildung 2.29 Mehrere Ereignisse in einer Prozedur
Der Programmcode:
Public Class Form1Private Sub optFarbeRot_CheckedChanged(...) _
Handles optFarbeRot.CheckedChanged,optFarbeGrün.CheckedChanged,optFarbeBlau.CheckedChanged
If optFarbeRot.Checked ThenlblAnzeige.Text = "Rot"
ElseIf optFarbeGrün.Checked ThenlblAnzeige.Text = "Grün"
ElselblAnzeige.Text = "Blau"
3703.book Seite 82 Donnerstag, 3. September 2015 2:52 14
2.5 Verzweigungen und Steuerelemente
83
2
End IfEnd Sub
End Class
Listing 2.19 Projekt »MehrereEreignisse«
Zur Erläuterung:
� Die Prozedur optFarbeRot_CheckedChanged() wird durch alle drei
CheckedChanged-Ereignisse aufgerufen.
2.5.4 Mehrere Gruppen von Optionsschaltflächen
Falls in den beiden letzten Programmen weitere Optionsschaltflächen hin-
zugefügt werden, gilt nach wie vor: Nur eine der Optionsschaltflächen ist
ausgewählt.
ContainerBenötigen Sie aber innerhalb eines Formulars mehrere voneinander unab-
hängige Gruppen von Optionsschaltflächen, wobei in jeder der Gruppen je-
weils nur eine Optionsschaltfläche ausgewählt sein soll, müssen Sie jede
Gruppe einzeln in einen Container setzen. Ein Formular ist bereits ein Con-
tainer, wir benötigen also einen weiteren Container.
GroupBoxAls ein solcher Container kann beispielsweise das Steuerelement Gruppe
(GroupBox) dienen. Mit der Zuweisung der Eigenschaft Text der GroupBox
geben Sie eine Beschriftung an.
ZuordnungFalls eine GroupBox markiert ist, dann wird eine neu erzeugte Options-
schaltfläche dieser GroupBox zugeordnet und reagiert gemeinsam mit den
anderen Optionsschaltflächen in dieser GroupBox. Anderenfalls wird sie
dem Formular zugeordnet und reagiert gemeinsam mit den anderen Opti-
onsschaltflächen, die im Formular außerhalb von GroupBoxen stehen. Sie
können eine bereits erzeugte Optionsschaltfläche auch im Nachhinein aus-
schneiden, das Ziel markieren und sie wieder einfügen, um die Zuordnung
zu ändern.
Das Projekt Optionsgruppen verwendet zwei voneinander unabhängige
Gruppen von Optionen, siehe Abbildung 2.30.
3703.book Seite 83 Donnerstag, 3. September 2015 2:52 14
2 Grundlagen
84
Abbildung 2.30 Zwei Gruppen von RadioButtons
Der zugehörige Code:
Public Class Form1Private AusgabeUrlaubsort As StringPrivate AusgabeUnterkunft As String
Private Sub optBerlin_CheckedChanged(...) _Handles optBerlin.CheckedChanged,optParis.CheckedChanged, optRom.CheckedChanged
' UrlaubsortIf optBerlin.Checked Then
AusgabeUrlaubsort = "Berlin"ElseIf optParis.Checked Then
AusgabeUrlaubsort = "Paris"Else
AusgabeUrlaubsort = "Rom"End IflblAnzeige.Text = AusgabeUrlaubsort & ", " &
AusgabeUnterkunftEnd Sub
Private Sub optAppartement_CheckedChanged(...) _Handles optAppartement.CheckedChanged,optPension.CheckedChanged, optHotel.CheckedChanged
' UnterkunftIf optAppartement.Checked Then
AusgabeUnterkunft = "Appartement"ElseIf optPension.Checked Then
AusgabeUnterkunft = "Pension"Else
3703.book Seite 84 Donnerstag, 3. September 2015 2:52 14
2.5 Verzweigungen und Steuerelemente
85
2
AusgabeUnterkunft = "Hotel"End IflblAnzeige.Text = AusgabeUrlaubsort & ", " &
AusgabeUnterkunftEnd Sub
End Class
Listing 2.20 Projekt »Optionsgruppen«
Zur Erläuterung:
� Bei einer Urlaubsbuchung können Zielort und Art der Unterkunft unab-
hä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. AusgabeUnter-
kunft ein Wert zugewiesen und anschließend ausgegeben.
� Die Variablen mussten klassenweit gültig deklariert werden, damit sie in
der jeweils anderen Prozedur zur Verfügung stehen.
Übung
Übung ÜKran-
Optionen
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 Button Start, siehe Abbil-
dung 2.31. Die Bewegung wird so lange ausgeführt, bis der Benutzer den
Button Stop drückt oder eine Begrenzung erreicht wird.
Abbildung 2.31 Übung ÜKranOptionen
3703.book Seite 85 Donnerstag, 3. September 2015 2:52 14
2 Grundlagen
86
2.5.5 Prozedur ohne Ereignis, Modularisierung
Allgemeine
Prozedur
Bisher ging es nur um Prozeduren, die mit einem Ereignis zusammenhin-
gen. Darüber hinaus können Sie aber auch unabhängige, allgemeine Proze-
duren 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 Options-
gruppen:
Public Class Form1Private AusgabeUrlaubsort As StringPrivate AusgabeUnterkunft As String
Private Sub optUrlaubsort_CheckedChanged(...) _Handles optBerlin.CheckedChanged,optParis.CheckedChanged, optRom.CheckedChanged
' UrlaubsortIf optBerlin.Checked Then
AusgabeUrlaubsort = "Berlin"ElseIf optParis.Checked Then
AusgabeUrlaubsort = "Paris"Else
AusgabeUrlaubsort = "Rom"End If
Anzeigen()End Sub
Private Sub optUnterkunft_CheckedChanged(...) _Handles optAppartement.CheckedChanged,optPension.CheckedChanged, optHotel.CheckedChanged
' UnterkunftIf optAppartement.Checked Then
AusgabeUnterkunft = "Appartement"ElseIf optPension.Checked Then
AusgabeUnterkunft = "Pension"Else
AusgabeUnterkunft = "Hotel"End If
3703.book Seite 86 Donnerstag, 3. September 2015 2:52 14
2.5 Verzweigungen und Steuerelemente
87
2
Anzeigen()End Sub
Private Sub Anzeigen()lblAnzeige.Text = AusgabeUrlaubsort & ", " &
AusgabeUnterkunftEnd 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_CheckedChan-
ged() und optUrlaubsort_CheckedChanged() steht jeweils die Anweisung
Anzeigen(). Dabei handelt es sich um einen Aufruf der Prozedur Anzei-
gen().
� Diese Prozedur steht weiter unten. Sie ist nicht direkt an ein Ereignis
gekoppelt.
Vorteil dieser Vorgehensweise: Gemeinsam genutzte Programmteile kön-
nen ausgelagert werden und müssen nur einmal geschrieben werden. Man
nennt diesen Vorgang bei der Programmierung auch Modularisierung. In
Abschnitt 4.7 wird dieses Thema noch genauer behandelt.
2.5.6 Schieberegler
Zahlenwert
einstellen
Das Steuerelement Schieberegler (engl.: Trackbar) dient zur komfortablen
Einstellung eines Zahlenwerts. Im nachfolgenden Projekt Schieberegler
werden drei dieser Steuerelemente dazu genutzt, die Hintergrundfarbe ei-
nes Panels einzustellen, siehe auch Abbildung 2.32.
Abbildung 2.32 Farbe über Schieberegler einstellen
3703.book Seite 87 Donnerstag, 3. September 2015 2:52 14
2 Grundlagen
88
ValueChanged Das Ereignis ValueChanged eines Schiebereglers zeigt an, dass der Wert geän-
dert wurde. In diesem Projekt führt dieses Ereignis von allen drei Schiebe-
reglern zur selben Prozedur.
Zunächst der Code des Programms:
Public Class Form1Private Sub Form1_Load(...) Handles MyBase.Load
FarbeAnzeigen()End Sub
Private Sub FarbeAnzeigen()panFarbe.BackColor = Color.FromArgb(
trkRot.Value, trkGrün.Value, trkBlau.Value)lblRotWert.Text = trkRot.ValuelblGrünWert.Text = trkGrün.ValuelblBlauWert.Text = trkBlau.Value
End Sub
Private Sub WertGeändert(sender As Object, e As EventArgs) _Handles trkRot.ValueChanged, trkGrün.ValueChanged,
trkBlau.ValueChangedFarbeAnzeigen()
End SubEnd Class
Listing 2.22 Projekt »Schieberegler«
Zur Erläuterung:
Color.FromArgb() � Die Prozedur zum Laden des Formulars und die Betätigung eines der
drei Schieberegler führt zum Aufruf der Prozedur FarbeAnzeigen().
Darin wird die Methode FromArgb() der Struktur Color aufgerufen, die
drei Werte (Rot, Grün, Blau) zur Einstellung der Hintergrundfarbe des
Panels benötigt. Diese drei Werte werden mithilfe der Eigenschaft Value
von den Schiebereglern geliefert. Ein Startwert von 0 für alle drei Schie-
beregler ergibt die Farbe Schwarz.
� Neben jedem Schieberegler ist ein zusätzliches Label platziert, in dem
der aktuelle Wert als Zahl angezeigt wird.
� Die Eigenschaften Minimum und Maximum stehen für den Zahlenbereich des
Schiebereglers, hier von 0 bis 255.
3703.book Seite 88 Donnerstag, 3. September 2015 2:52 14
2.6 Schleifen
89
2
LargeChange,
SmallChange
� Falls der Benutzer rechts oder links neben dem Schieberegler klickt,
dann wird der Wert um den Eigenschaftswert von LargeChange verändert
(hier: 32). Falls der Schieberegler den Fokus hat, also das aktuelle Steuer-
element ist, und der Benutzer eine der Pfeiltasten betätigt, dann wird
der Wert um den Eigenschaftswert von SmallChange verändert (hier: 8).
TickFrequency� Die Eigenschaft TickFrequency steht für den Abstand der Markierungen
am Schieberegler (hier: 16).
2.6 Schleifen
Schleifen werden in Programmen häufig benötigt. Sie ermöglichen den
mehrfachen Durchlauf von Anweisungen. Darin liegt eine besondere
Stärke der Programmierung allgemein: die schnelle wiederholte Bearbei-
tung ähnlicher Vorgänge. Es gibt die Schleifenstrukturen: Do ... Loop, For
... Next, For Each ... In ... und With.
Mithilfe der Strukturen steuern Sie die Wiederholungen eines Anweisungs-
blocks (die Anzahl der Schleifendurchläufe). Dabei wird der Wahrheitswert
eines Ausdrucks (der Schleifenbedingung) oder der Wert eines numeri-
schen Ausdrucks (Wert des Schleifenzählers) benötigt.
AuflistungDie Schleife For Each ... In ... wird bei Feldern oder Auflistungen (engl.:
Collections) eingesetzt. Die Anweisung With dient der Steuerung einer be-
sonderen Schleife mit nur einem Durchlauf.
2.6.1 For ... Next
Falls die Anzahl der Schleifendurchläufe bekannt oder vor Beginn der
Schleife berechenbar ist, sollten Sie die For...Next-Schleife verwenden. Ihr
Aufbau sieht wie folgt aus:
For Zähler = Anfang To Ende [ Step Schritt ][ Anweisungen ][ Exit For ][ Anweisungen ]
Next [ Zähler ]
StepDie Zahlen-Variable Zähler wird zunächst auf den Wert von Anfang gesetzt.
Nach jedem Durchlauf wird sie um den Wert von Schritt verändert, also
vergrößert oder verkleinert. Falls Step Schritt nicht angegeben wurde, ver-
3703.book Seite 89 Donnerstag, 3. September 2015 2:52 14
2 Grundlagen
90
größert sich die Variable um 1. Der neue Wert von Zähler wird mit dem
Wert von Ende verglichen.
� Falls die Schrittweite positiv ist und der Wert von Zähler nicht größer als
der Wert von Ende ist, wird die Schleife wiederum durchlaufen.
� Falls die Schrittweite negativ ist und der Wert von Zähler nicht kleiner
als der Wert von Ende ist, wird die Schleife ebenfalls wiederum durch-
laufen.
� Falls die Schrittweite positiv ist und der Wert von Zähler größer als der
Wert von Ende ist oder falls die Schrittweite negativ ist und der Wert von
Zähler kleiner als der Wert von Ende ist, wird die Schleife beendet.
Next Zähler Die Anweisung Next kennzeichnet das Ende der Schleife. Zur Verdeutli-
chung sollte nachfolgend immer Zähler stehen.
Exit For Die Anweisung Exit For können Sie einsetzen, um die Schleife aufgrund ei-
ner speziellen Bedingung sofort zu verlassen.
In dem folgenden Programm im Projekt ForNext werden durch Aufruf von
vier Buttons vier unterschiedliche Schleifen durchlaufen, siehe Abbildung
2.33.
Abbildung 2.33 Verschiedene For-Schleifen
Der Programmcode:
Public Class Form1Private Sub cmdSchleife1_Click(...) Handles ...
Dim i As IntegerlblA1.Text = ""For i = 3 To 7
lblA1.Text &= i & vbCrLfNext i
End Sub
3703.book Seite 90 Donnerstag, 3. September 2015 2:52 14
2.6 Schleifen
91
2
Private Sub cmdSchleife2_Click(...) Handles ...Dim i As IntegerlblA2.Text = ""For i = 3 To 11 Step 2
lblA2.Text &= i & vbCrLfNext i
End Sub
Private Sub cmdSchleife3_Click(...) Handles ...Dim i As IntegerlblA3.Text = ""For i = 7 To 3 Step -1
lblA3.Text &= i & vbCrLfNext i
End Sub
Private Sub cmdSchleife4_Click(...) Handles ...Dim d As DoublelblA4.Text = ""For d = 3.5 To 7.5 Step 1.5
lblA4.Text &= d & vbCrLfNext d
End SubEnd Class
Listing 2.23 Projekt »ForNext«
Zur Erläuterung der ersten Schleife:
� Als Zählervariable dient i.
� Die Schleife wird erstmalig mit i = 3 und letztmalig mit i = 7 durchlaufen.
� Es ist keine Schrittweite angegeben, also wird als Schrittweite 1 ge-
nommen.
Zur Erläuterung der restlichen Schleifen:
� Bei der zweiten Schleife wurde die Schrittweite 2 gewählt.
� Die dritte Schleife läuft abwärts, daher muss eine negative Schrittweite
gewählt werden.
� In der vierten Schleife wird gezeigt, dass eine Schleife auch nicht ganz-
zahlige Werte durchlaufen kann.
3703.book Seite 91 Donnerstag, 3. September 2015 2:52 14
2 Grundlagen
92
2.6.2 Do ... Loop
Steuerung über
Bedingung
Ist die Anzahl der Schleifendurchläufe nicht bekannt bzw. vor Beginn der
Schleife nicht berechenbar, sollten Sie die Do...Loop-Schleife verwenden. Es
gibt sie in fünf verschiedenen Varianten:
While � Do While ... Loop prüft die Bedingung zum Weiterlaufen der Schleife am
Anfang der Schleife.
� Do ... Loop While prüft die Bedingung zum Weiterlaufen der Schleife am
Ende der Schleife.
Until � Do Until ... Loop prüft die Bedingung zum Abbruch der Schleife am
Anfang der Schleife.
� Do ... Loop Until prüft die Bedingung zum Abbruch der Schleife am Ende
der Schleife.
� Do ... Loop: Die Bedingung zum Weiterlaufen oder Abbruch der Schleife
wird nicht geprüft, daher ist eine Verzweigung in der Schleife und ein
Exit Do zur Beendigung der Schleife notwendig.
Der allgemeine Aufbau sieht wie folgt aus:
Do { While | Until } Bedingung[ Anweisungen ][ Exit Do ][ Anweisungen ]
Loop
oder
Do[ Anweisungen ][ Exit Do ][ Anweisungen ]
Loop { While | Until } Bedingung
Zufallsgenerator Das folgende Programm im Projekt DoLoop nutzt alle fünf Möglichkeiten.
Es werden Zahlen addiert, solange die Summe der Zahlen kleiner als 5 ist,
siehe Abbildung 2.34. Da ein Zufallsgenerator die Zahlen erzeugt, ist die An-
zahl der Schleifendurchläufe nicht vorhersagbar.
Randomize(), Rnd() Der Zufallszahlengenerator wird mithilfe der Funktion Rnd() realisiert. Sie
liefert bei jedem Aufruf einen neuen quasizufälligen Single-Wert zwischen
0 (einschließlich) und 1 (ausschließlich). Der Zufallszahlengenerator muss
3703.book Seite 92 Donnerstag, 3. September 2015 2:52 14
2.6 Schleifen
93
2
mithilfe der Prozedur Randomize() vor der Benutzung initialisiert werden,
da anderenfalls immer die gleichen Zufallszahlen geliefert würden. Die
Initialisierung erfolgt pro Programmaufruf einmalig beim Laden des For-
mulars.
Abbildung 2.34 Bedingungsgesteuerte Schleife
Load, MyBaseDieser Zeitpunkt wird durch das Ereignis Load gekennzeichnet. Sie erstellen
den Rahmen dieser Ereignisprozedur, indem Sie einen Doppelklick auf ei-
ner freien Stelle des Formulars ausführen. Die zugehörige Ereignisproze-
dur behandelt das Ereignis MyBase.Load. Mit MyBase können Sie auf die
Basisklasse der Klasse zugreifen, in der Sie sich befinden; in diesem Fall ist
das die Klasse des Formulars Form1. Mehr zum Begriff MyBase finden Sie in
Abschnitt 5.10.
Public Class Form1Private Sub Form1_Load(...) Handles MyBase.Load
Randomize()End Sub
Private Sub cmdSchleife1_Click(...) Handles ...Dim Summe As SinglelblAnzeige.Text = ""Summe = 0Do While Summe < 5
Summe += Rnd()lblAnzeige.Text &= Summe & vbCrLf
LooplblAnzeige.Text &= "Fertig!"
End Sub
3703.book Seite 93 Donnerstag, 3. September 2015 2:52 14
2 Grundlagen
94
Private Sub cmdSchleife2_Click(...) Handles ...Dim Summe As SinglelblAnzeige.Text = ""Summe = 0Do
Summe += Rnd()lblAnzeige.Text &= Summe & vbCrLf
Loop While Summe < 5lblAnzeige.Text &= "Fertig!"
End Sub
Private Sub cmdSchleife3_Click(...) Handles ...Dim Summe As SinglelblAnzeige.Text = ""Summe = 0Do Until Summe >= 5
Summe += Rnd()lblAnzeige.Text &= Summe & vbCrLf
LooplblAnzeige.Text &= "Fertig!"
End Sub
Private Sub cmdSchleife4_Click(...) Handles ...Dim Summe As SinglelblAnzeige.Text = ""Summe = 0Do
Summe += Rnd()lblAnzeige.Text &= Summe & vbCrLf
Loop Until Summe >= 5lblAnzeige.Text &= "Fertig!"
End Sub
Private Sub cmdSchleife5_Click(...) Handles ...Dim Summe As SinglelblAnzeige.Text = ""Summe = 0Do
Summe += Rnd()
3703.book Seite 94 Donnerstag, 3. September 2015 2:52 14
2.6 Schleifen
95
2
lblAnzeige.Text &= Summe & vbCrLfIf Summe >= 5 Then Exit Do
LooplblAnzeige.Text &= "Fertig!"
End SubEnd Class
Listing 2.24 Projekt »DoLoop«
Zur Erläuterung:
� Im Folgenden wird nur die erste Ereignisprozedur cmdSchleife1_Click()
erläutert. Die anderen Prozeduren sind vergleichbar aufgebaut. Auf die
unterschiedliche Schleifensteuerung wurde bereits weiter oben einge-
gangen.
� Der Inhalt des Labels wird von alten Ausgaben gelöscht.
Summe berechnen� Die Variable Summe wird zunächst mit dem Wert 0 initialisiert. Das ist in
Visual Basic eigentlich nicht nötig, gehört aber zum guten Program-
mierstil, da Sie auf diese Weise den Wert der Variablen zu Beginn der
Schleife sicherstellen können.
� Zu Beginn der Schleife wird geprüft, ob die Summe der Zahlen kleiner als
5 ist. Trifft das zu, kann die Schleife durchlaufen werden.
Hinweis: Bei einer solchen kopfgesteuerten Schleife (d. h., die Abbruch-
bedingung wird im Kopf der Schleife geprüft) kann es vorkommen, dass
sie niemals durchlaufen wird.
� Der Wert der Variablen Summe wird um eine Zufallszahl zwischen 0 und 1
erhöht.
� Der Inhalt des Labels wird um den aktuellen Wert der Summe und einen
Zeilenumbruch verlängert.
� Sie kommen zum Ende der Schleife, zur Anweisung Loop. Sie führt dazu,
dass das Programm wieder zu Beginn der Schleife fortgesetzt wird. Es
wird wiederum geprüft, ob die Summe der Zahlen kleiner als 5 ist. Sobald
das nicht mehr zutrifft, läuft das Programm hinter der Anweisung Loop
weiter.
� Es wird die Ausgabe Fertig! erzeugt.
3703.book Seite 95 Donnerstag, 3. September 2015 2:52 14
2 Grundlagen
96
2.6.3 Ein Würfel
Im nachfolgenden Programm, das sich ebenfalls im Projekt DoLoop befin-
det, wird mithilfe des Zufallsgenerators insgesamt zehnmal gewürfelt. Zu-
nächst der Code:
Private Sub cmdWürfel_Click(...) Handles ...Dim Wert As Integer, i As Integer = 1lblAnzeige.Text = ""Do
Wert = Math.Floor(Rnd() * 6) + 1lblAnzeige.Text &= Wert & vbCrLfi = i + 1
Loop While i <= 10End Sub
Listing 2.25 Projekt »DoLoop«, ein Würfel
Math.Floor() Die Funktion Rnd() liefert einen Single-Wert von 0 (einschließlich) bis 1
(ausschließlich). Der Ausdruck Rnd() * 6 ergibt somit einen Single-Wert von
0 (einschließlich) bis 6 (ausschließlich). Die Funktion Math.Floor(), siehe
auch Abschnitt 6.5, liefert die nächstniedrigere ganze Zahl, also eine ganze
Zahl von 0 bis 5. Addiert man eine 1 hinzu, so erhält man eine ganze Zahl
von 1 bis 6, also das Ergebnis eines Würfels, siehe Abbildung 2.35.
Abbildung 2.35 Zehnmal gewürfelt
2.6.4 With
Mithilfe von With führen Sie eine Reihe von Anweisungen für ein einzelnes
Objekt durch. Dabei wird der einmal erstellte Bezug zum Objekt mehrfach
3703.book Seite 96 Donnerstag, 3. September 2015 2:52 14
2.6 Schleifen
97
2
verwendet. Bei einem längeren Objektnamen ist das sehr nützlich und
übersichtlich. Der Aufbau sieht wie folgt aus:
With Objekt[ Anweisungen ]
End With
Ein Beispiel im Projekt WithBlock:
Public Class Form1Private Sub cmdAnzeige_Click(...) Handles ...
With lblAnzeige.BorderStyle = BorderStyle.Fixed3D.BackColor = Color.Yellow.Text = "Test".Location = New Point(20, 50)
End WithEnd Sub
End Class
Listing 2.26 Projekt »WithBlock«
Zur Erläuterung:
� Die Eigenschaften des Labels lblAnzeige werden mithilfe von With ge-
ändert.
� Die Eigenschaften Rahmenstil, Hintergrundfarbe, Textinhalt und Posi-
tion werden nacheinander gesetzt. Dabei muss zu Beginn der Anwei-
sung jeweils nur ein Punkt angegeben werden. Da das Programm sich
innerhalb des With-Blocks befindet, ist es klar, auf welches Objekt sich
die Änderungen beziehen.
2.6.5 Übungen
Anhand einer Reihe von Übungsaufgaben zu Schleifen (und Verzweigun-
gen) werden im Folgenden einige typische Probleme der Programmierung
in Visual Basic verdeutlicht. Der visuelle Teil der Lösung enthält in der Re-
gel nur ein einfaches Textfeld zur Eingabe, einen oder zwei Buttons zum
Durchführen der Aufgabe und ein einfaches Label zur Ausgabe.
3703.book Seite 97 Donnerstag, 3. September 2015 2:52 14
2 Grundlagen
98
Übung ÜForNext1
Übung ÜForNext1 For-Schleife: Schreiben Sie ein Programm mit einer einfachen Schleife, das
nacheinander die folgenden Zahlen ausgibt: 35; 32,5; 30; 27,5; 25; 22,5; 20.
Übung ÜForNext2
Übung ÜForNext2 For-Schleife: Erweitern Sie die vorherige Aufgabe. Am Ende der Zeile sollen
Summe und Mittelwert aller Zahlen angezeigt werden, siehe Abbildung
2.36.
Abbildung 2.36 Übung ÜForNext1 und 2
Übung ÜDoLoop
Übung ÜDoLoop Do...Loop-Schleife: Schreiben Sie ein Programm, mit dessen Hilfe eine ein-
gegebene Zahl wiederholt halbiert und ausgegeben wird. Das Programm
soll beendet werden, wenn das Ergebnis der Halbierung kleiner als 0,001
ist, siehe Abbildung 2.37.
Abbildung 2.37 Übung ÜDoLoop
3703.book Seite 98 Donnerstag, 3. September 2015 2:52 14
2.6 Schleifen
99
2
Übung ÜZahlenraten
Übung ÜZahlen-
raten
If ... Else: Schreiben Sie ein Programm, mit dem das Spiel Zahlenraten ge-
spielt werden kann: Per Zufallsgenerator wird eine ganze Zahl zwischen 1
und 100 erzeugt, aber nicht angezeigt. Der Benutzer soll so lange Zahlen
eingeben, bis er die Zahl erraten hat. Als Hilfestellung soll jedes Mal ausge-
geben werden, ob die eingegebene Zahl größer oder kleiner als die zu ra-
tende Zahl ist, siehe Abbildung 2.38.
Abbildung 2.38 Übung ÜZahlenraten
Übung ÜSteuertabelle
Übung
ÜSteuertabelle
For-Schleife, If ... Else oder Select Case: Erweitern Sie das Programm aus
Übung ÜSteuerbetrag. Schreiben Sie ein Programm, das zu einer Reihe von
Gehältern u. a. den Steuerbetrag berechnet und ausgibt. In Tabelle 2.14 sind
die Steuersätze angegeben.
Es soll für jedes Gehalt von 5.000 € bis 35.000 € in Schritten von 3.000 €
folgende vier Werte ausgegeben werden: Gehalt, Steuersatz, Steuerbetrag,
Gehalt abzüglich Steuerbetrag. Jedes Gehalt soll mit den zugehörigen Wer-
ten in einer eigenen Zeile ausgegeben werden, siehe Abbildung 2.39. Auch
hier wird davon ausgegangen, dass das gesamte Gehalt zum angegebenen
Satz versteuert wird.
Gehalt Steuersatz
von 0 € bis einschließlich 12.000 € 12 %
von über 12.000 € bis einschließlich 20.000 € 15 %
von über 20.000 € bis einschließlich 30.000 € 20 %
über 30.000 € 25 %
Tabelle 2.14 Übung ÜSteuertabelle
3703.book Seite 99 Donnerstag, 3. September 2015 2:52 14
2 Grundlagen
100
Abbildung 2.39 Übung ÜSteuertabelle
2.7 Schleifen und Steuerelemente
In diesem Abschnitt werden die beiden Steuerelemente Listenfeld und
Kombinationsfeld eingeführt. Damit können Sie eine einfache oder mehr-
fache Auswahl aus mehreren Möglichkeiten treffen. Im Zusammenhang
mit diesen Steuerelementen werden häufig Schleifen benötigt, wie sie im
vorherigen Abschnitt behandelt wurden.
2.7.1 Listenfeld
ListBox Ein Listenfeld (ListBox) zeigt eine Liste mit Einträgen an, aus denen der Be-
nutzer einen oder mehrere auswählen kann. Enthält das Listenfeld mehr
Einträge, als gleichzeitig angezeigt werden können, erhält es automatisch
einen Scrollbalken.
Items Die wichtigste Eigenschaft des Steuerelements ListBox ist die Auflistung
Items. Sie enthält die einzelnen Listeneinträge. Listenfelder können zur
Entwurfszeit gefüllt werden, indem der Eigenschaft Items in einem eigenen
kleinen Dialogfeld die Einträge hinzugefügt werden. In der Regel werden
Sie ein Listenfeld aber zur Laufzeit füllen.
2.7.2 Listenfeld füllen
Items.Add() Bisher wurden die Eigenschaften und Ereignisse von Steuerelementen be-
handelt. Darüber hinaus gibt es jedoch auch spezifische Methoden, die auf
diese Steuerelemente bzw. auf deren Eigenschaften angewendet werden
können. Beim Listenfeld ist das u. a. die Methode Add() der Eigenschaft
3703.book Seite 100 Donnerstag, 3. September 2015 2:52 14
2.7 Schleifen und Steuerelemente
101
2
Items. Diese wird am sinnvollsten zum Zeitpunkt des Ladens des Formulars
genutzt.
Im nachfolgenden Programm im Projekt ListenfeldFüllen wird ein Listen-
feld für italienische Speisen zu Beginn des Programms mit den folgenden
Werten gefüllt: Spaghetti, Grüne Nudeln, Tortellini, Pizza, Lasagne, siehe Ab-
bildung 2.40.
Abbildung 2.40 Listenfeld mit Scrollbalken
Der zugehörige Code:
Public Class Form1Private Sub Form1_Load(...) Handles MyBase.Load
lstSpeisen.Items.Add("Spaghetti")lstSpeisen.Items.Add("Grüne Nudeln")lstSpeisen.Items.Add("Tortellini")lstSpeisen.Items.Add("Pizza")lstSpeisen.Items.Add("Lasagne")
End SubEnd Class
Listing 2.27 Projekt »ListenfeldFüllen«
Zur Erläuterung:
� Das Ereignis Form1_Load wird ausgelöst, wenn das Formular geladen
wird.
� Die einzelnen Speisen werden der Reihe nach dem Listenfeld hinzuge-
fügt. Lasagne steht anschließend ganz unten.
2.7.3 Wichtige Eigenschaften
Die folgenden Eigenschaften eines Listenfelds bzw. der Auflistung Items
werden in der Praxis häufig benötigt:
3703.book Seite 101 Donnerstag, 3. September 2015 2:52 14
2 Grundlagen
102
� Items.Count gibt die Anzahl der Elemente in der Liste an.
SelectedItem � SelectedItem beinhaltet das aktuell vom Benutzer ausgewählte Ele-
ment der Liste. Falls kein Element ausgewählt wird, ergibt SelectedItem
nichts.
� SelectedIndex gibt die laufende Nummer des aktuell vom Benutzer aus-
gewählten Elements an, beginnend bei 0 für das oberste Element. Falls
kein Element ausgewählt wird, ergibt SelectedIndex den Wert -1.
Items(i) � Über Items (Index) können Sie die einzelnen Elemente ansprechen, das
oberste Element ist Items(0).
Das folgende Programm im Projekt ListenfeldEigenschaften veranschau-
licht alle diese Eigenschaften (siehe auch Abbildung 2.41).
Public Class Form1[...]
Private Sub cmdAnzeige_Click(...) Handles ...Dim i As Integer
lblAnzeige1.Text = "Anzahl: " & lstSpeisen.Items.CountlblAnzeige2.Text = "Ausgewählter Eintrag: " &
lstSpeisen.SelectedItemlblAnzeige3.Text = "Nummer des ausgewählten" &
" Eintrags: " & lstSpeisen.SelectedIndex
lblAnzeige4.Text = "Alle Einträge:" & vbCrLfFor i = 0 To lstSpeisen.Items.Count - 1
lblAnzeige4.Text &= lstSpeisen.Items(i) & vbCrLfNext i
End SubEnd Class
Listing 2.28 Projekt »ListenfeldEigenschaften«
Zur Erläuterung:
� Das Listenfeld ist bereits gefüllt, siehe Projekt ListenfeldFüllen.
� Die Anzahl der Elemente wird über lstSpeisen.Items.Count ausgegeben,
in diesem Fall sind es 5.
� Der ausgewählte Eintrag steht in lstSpeisen.SelectedItem, seine Num-
mer in lstSpeisen.SelectedIndex.
3703.book Seite 102 Donnerstag, 3. September 2015 2:52 14
2.7 Schleifen und Steuerelemente
103
2
� Eine For-Schleife dient der Ausgabe aller Elemente. Sie läuft von 0 bis
lstSpeisen.Items.Count – 1. Das liegt daran, dass bei einer Liste mit fünf
Elementen die Elemente mit 0 bis 4 nummeriert sind.
� Die einzelnen Elemente werden mit lstSpeisen.Items(i) angesprochen.
Die Variable i beinhaltet bei der Schleife die aktuelle laufende Nummer.
Abbildung 2.41 Anzeige nach Auswahl eines Elements
2.7.4 For Each … In …
SchleifeZur Ausgabe der Elemente einer Auflistung eignet sich auch die For-Each-
Schleife. Nach Betätigung des Buttons For Each im Projekt Listenfeld-
Eigenschaften (siehe Abbildung 2.41) wird die folgende Prozedur durch-
laufen:
Private Sub cmdForEach_Click(...) Handles ...lblAnzeige4.Text = "Alle Einträge:" & vbCrLfFor Each s As String In lstSpeisen.Items
lblAnzeige4.Text &= s & vbCrLfNext s
End Sub
Listing 2.29 For-Each-Schleife
Den Kopf einer For-Each-Schleife verstehen Sie am besten, wenn Sie ihn
dem Sinn nach übersetzen: Durchlaufe jedes Element der Auflistung lst-
3703.book Seite 103 Donnerstag, 3. September 2015 2:52 14
2 Grundlagen
104
Speisen.Items. Lege dabei jeweils eine Kopie des Elements an. Der Datentyp
der Kopie entspricht dem Datentyp eines Elements (hier also String).
Innerhalb der Schleife wird dann jeder String s einzeln zur Ausgabe hinzu-
gefügt.
Beachten Sie, dass eine Änderung des Strings s innerhalb der Schleife nicht
zur Änderung des zugehörigen Elements der Auflistung führt, da es sich ja
bei s um eine Kopie handelt.
2.7.5 Wechsel der Auswahl
SelectedIndex-
Changed
Ähnlich wie beim Kontrollkästchen oder bei der Optionsschaltfläche ist
das wichtigste Ereignis einer ListBox nicht der Click, sondern das Ereignis
SelectedIndexChanged. Dieses Ereignis zeigt nicht nur an, dass der Benutzer
die ListBox bedient hat, sondern auch, dass sie ihren Zustand geändert hat.
Das kann z. B. auch durch Programmcode geschehen. Eine Ereignisproze-
dur zu SelectedIndexChanged() wird in jedem Fall durchlaufen, sobald die
ListBox (vom Benutzer oder vom Programmcode) geändert wird.
Allerdings wird der Programmablauf meist so gestaltet, dass bei einem an-
deren Ereignis die aktuelle Auswahl der ListBox abgefragt und anschlie-
ßend je nach Zustand unterschiedlich reagiert wird.
Das nachfolgende Programm im Projekt ListenfeldEreignis veranschaulicht
diesen Zusammenhang, siehe Abbildung 2.42.
Abbildung 2.42 Anzeige nach dem Ereignis
Der Programmcode:
Public Class Form1[...]
Private Sub cmdEreignis_Click(...) Handles ...lstSpeisen.SelectedIndex = 3
3703.book Seite 104 Donnerstag, 3. September 2015 2:52 14
2.7 Schleifen und Steuerelemente
105
2
End Sub
Private Sub lstSpeisen_SelectedIndexChanged(...) _Handles lstSpeisen.SelectedIndexChanged
lblAnzeige.Text = lstSpeisen.SelectedItemEnd Sub
End Class
Listing 2.30 Projekt »ListenfeldEreignis«
Zur Erläuterung:
� Das Listenfeld ist bereits gefüllt, siehe Projekt ListenfeldFüllen.
� In der Ereignisprozedur cmdEreignis_Click() wird die Nummer des aus-
gewählten Elements auf 3 gesetzt. Dadurch wird in der ListBox Pizza aus-
gewählt. Im Label wird die geänderte Auswahl sofort angezeigt, da das
Ereignis lstSpeisen_SelectedIndexChanged ausgelöst wurde.
� In der dazugehörigen Ereignisprozedur lstSpeisen_SelectedIndex-
Changed() wird die Anzeige des ausgewählten Elements ausgelöst. Dieses
wird unmittelbar nach der Auswahl angezeigt. Die Auswahl lässt sich
durch einen Klick des Benutzers in der Liste oder auch durch Programm-
code auslösen.
2.7.6 Wichtige Methoden
Die Methoden Insert() und RemoveAt() können Sie zur Veränderung der
Inhalte des Listenfelds nutzen:
Insert()� Mithilfe der Methode Insert() können Sie Elemente zum Listenfeld an
einer gewünschten Stelle hinzufügen.
RemoveAt()� Die Methode RemoveAt() löscht ein Element an der gewünschten Stelle.
Im nachfolgenden Programm im Projekt ListenfeldMethoden werden die
beiden Methoden eingesetzt, um ein Listenfeld zu verwalten, siehe Abbil-
dung 2.43. Es können Elemente eingefügt, gelöscht und geändert werden.
Um sicherzustellen, dass es sich hierbei um sinnvolle Operationen handelt,
müssen Sie jeweils bestimmte Bedingungen beachten.
3703.book Seite 105 Donnerstag, 3. September 2015 2:52 14
2 Grundlagen
106
Abbildung 2.43 Verwaltung eines Listenfelds
Public Class Form1[...]
Private Sub cmdLöschen_Click(...) Handles ...Dim X As IntegerX = lstSpeisen.SelectedIndexIf X <> -1 Then
lstSpeisen.Items.RemoveAt(X)End If
End Sub
Private Sub cmdEinfügen_Click(...) Handles ...If txtNeu.Text = "" Then
Exit SubEnd IfIf optAnfang.Checked Then
lstSpeisen.Items.Insert(0, txtNeu.Text)ElseIf optAuswahl.Checked And
lstSpeisen.SelectedIndex <> -1 ThenlstSpeisen.Items.Insert(
lstSpeisen.SelectedIndex, txtNeu.Text)Else
lstSpeisen.Items.Add(txtNeu.Text)End IftxtNeu.Text = ""
End Sub
3703.book Seite 106 Donnerstag, 3. September 2015 2:52 14
2.7 Schleifen und Steuerelemente
107
2
Private Sub cmdErsetzen_Click(...) Handles ...Dim X As IntegerIf txtErsetzen.Text <> "" And
lstSpeisen.SelectedIndex <> -1 ThenX = lstSpeisen.SelectedIndexlstSpeisen.Items.RemoveAt(X)lstSpeisen.Items.Insert(X, txtErsetzen.Text)txtErsetzen.Text = ""
End IfEnd Sub
Private Sub cmdAllesLöschen_Click(...) Handles ...lstSpeisen.Items.Clear()
End SubEnd Class
Listing 2.31 Projekt »ListenfeldMethoden«
Zur Erläuterung:
� Das Listenfeld ist bereits gefüllt, siehe Projekt ListenfeldFüllen.
� In der Prozedur cmdLöschen_Click() wird der Wert von SelectedIndex in
der Variablen X gespeichert. Anschließend wird untersucht, ob ein Ele-
ment ausgewählt wurde, ob also der Wert von X ungleich -1 ist. Ist das der
Fall, wird dieses Element mit der Methode RemoveAt() gelöscht. Wird
kein Element ausgewählt, geschieht nichts.
� Die Prozedur cmdEinfügen_Click() untersucht zunächst, ob in der Text-
Box etwas zum Einfügen steht. Ist das der Fall, wird untersucht, welcher
Einfügeort über die Optionsschaltflächen ausgesucht wurde.
– Wurde als Einfügeort das Ende der Liste gewählt, wird der Inhalt mit
der bekannten Methode Add() am Ende der Liste angefügt.
– In den beiden anderen Fällen wird die Methode Insert() zum Einfü-
gen des Inhalts der TextBox vor einem vorhandenen Listeneintrag
genutzt. Diese Methode benötigt den Index des Elements, vor dem
eingefügt werden soll. Das ist entweder der Wert 0, falls am Anfang
der Liste eingefügt werden soll, oder der Wert von SelectedIndex, falls
vor dem ausgewählten Element eingefügt werden soll.
� Anschließend wird die TextBox gelöscht, damit nicht versehentlich
zweimal das gleiche Element eingefügt wird.
3703.book Seite 107 Donnerstag, 3. September 2015 2:52 14
2 Grundlagen
108
� In der Prozedur cmdErsetzen_Click() wird untersucht, ob in der TextBox
etwas zum Ersetzen steht und ob ein Element zum Ersetzen ausgewählt
wurde. Ist das der Fall, wird
– der Wert von SelectedIndex in der Variablen X gespeichert,
– das zugehörige Element mit der Methode RemoveAt() gelöscht,
– der neue Text an der gleichen Stelle mit der Methode Insert() einge-
fügt und
– die TextBox gelöscht, damit nicht versehentlich zweimal das gleiche
Element eingefügt wird.
� In der Prozedur cmdAllesLöschen_Click() dient die Methode Clear()
zum Leeren der ListBox.
So sieht das Dialogfeld nach einigen Veränderungen aus (siehe Abbildung
2.44).
Abbildung 2.44 Nach einigen Änderungen
2.7.7 Mehrfachauswahl
SelectionMode Sie können es dem Benutzer ermöglichen, gleichzeitig mehrere Einträge
aus einer Liste auszuwählen, wie er das auch aus anderen Windows-Pro-
grammen kennt. Dazu wird zur Entwicklungszeit die Eigenschaft Selec-
tionMode auf den Wert MultiExtended gesetzt. Der Benutzer kann
anschließend mithilfe der (Strg)-Taste mehrere einzelne Elemente aus-
wählen oder mithilfe der (ª)-Taste (wie für Großbuchstaben) einen zusam-
menhängenden Bereich von Elementen markieren.
Hinweis: Nach dem Einfügen einer neuen ListBox in ein Formular steht die
Eigenschaft SelectionMode zunächst auf dem Standardwert One, d. h., es
lässt sich nur ein Element auswählen.
SelectedIndices Die Eigenschaften SelectedIndices und SelectedItems beinhalten die Num-
mern bzw. die Einträge der ausgewählten Elemente. Sie ähneln in ihrem
3703.book Seite 108 Donnerstag, 3. September 2015 2:52 14
2.7 Schleifen und Steuerelemente
109
2
Verhalten der Eigenschaft Items. Das nachfolgende Programm im Projekt
ListenfeldMehrfachauswahl verdeutlicht das, siehe auch Abbildung 2.45.
Abbildung 2.45 Mehrere ausgewählte Elemente
Der Programmcode:
Public Class Form1[...]
Private Sub cmdAnzeigen_Click(...) Handles ...lblAnzeige.Text = ""For Each s As String In lstSpeisen.SelectedItems
lblAnzeige.Text &= s & vbCrLfNext s
End SubEnd Class
Listing 2.32 Projekt »ListenfeldMehrfachauswahl«
Zur Erläuterung:
� Das Listenfeld ist bereits gefüllt, siehe Projekt ListenfeldFüllen.
� In der Prozedur cmdAnzeigen_Click() werden alle ausgewählten Ele-
mente mithilfe einer For-Each-Schleife durchlaufen und ausgegeben.
2.7.8 Kombinationsfelder
Das Steuerelement Kombinationsfeld (ComboBox) vereinigt die Merkmale
eines Listenfelds mit denen eines Textfelds. Der Benutzer kann einen Ein-
trag aus dem Listenfeldbereich auswählen oder im Textfeldbereich einge-
ben. Das Kombinationsfeld hat im Wesentlichen die Eigenschaften und
Methoden des Listenfelds.
3703.book Seite 109 Donnerstag, 3. September 2015 2:52 14
2 Grundlagen
110
DropDownStyle Sie können mithilfe der Eigenschaft DropDownStyle zwischen drei Typen
von Kombinationsfeldern wählen:
� DropDown: Das ist der Standard – die Auswahl aus einer Liste (Aufklappen
der Liste mit der Pfeiltaste) oder Eingabe in das Textfeld. Das Kombina-
tionsfeld hat die Größe einer TextBox.
� DropDownList: Die Auswahl ist begrenzt auf die Einträge der aufklappba-
ren Liste, also ohne eigene Eingabemöglichkeit. Dieser Typ Kombinati-
onsfeld verhält sich demnach wie ein Listenfeld, ist allerdings so klein
wie eine TextBox. Ein Listenfeld ließe sich zwar auch auf diese Größe
verkleinern, aber die Scrollpfeile sind dann sehr klein.
� Simple: Die Liste ist immer geöffnet und wird bei Bedarf mit einer Bild-
laufleiste versehen. Wie beim Typ DropDown ist die Auswahl aus der Liste
oder die Eingabe in das Textfeld möglich. Beim Erstellen eines solchen
Kombinationsfelds lässt sich die Höhe wie bei ListBoxen einstellen.
Die Eigenschaft SelectionMode gibt es bei Kombinationsfeldern nicht. Das
folgende Programm im Projekt Kombinationsfeld führt alle drei Typen von
Kombinationsfeldern vor, siehe auch Abbildung 2.46.
Public Class Form1Private Sub Form1_Load(...) Handles MyBase.Load
cmbWerkzeug1.Items.Add("Zange")cmbWerkzeug1.Items.Add("Hammer")cmbWerkzeug1.Items.Add("Bohrer")cmbWerkzeug1.Items.Add("Schraubendreher")
[... Das Gleiche für die beiden anderen Kombinationsfelder ...]
End Sub
Private Sub cmdAnzeigen1_Click(...) Handles ...lblAnzeige1.Text = cmbWerkzeug1.Text
End Sub
Private Sub cmdAnzeigen2_Click(...) Handles ...lblAnzeige2.Text = cmbWerkzeug2.SelectedItem
End Sub
Private Sub cmdAnzeigen3_Click(...) Handles ...
3703.book Seite 110 Donnerstag, 3. September 2015 2:52 14
2.7 Schleifen und Steuerelemente
111
2
lblAnzeige3.Text = cmbWerkzeug3.TextEnd Sub
End Class
Listing 2.33 Projekt »Kombinationsfeld«
Abbildung 2.46 Drei verschiedene Kombinationsfelder
Zur Erläuterung:
� Das erste Kombinationsfeld hat den DropDownStyle DropDown. Hat der
Benutzer einen Eintrag ausgewählt, erscheint dieser in der TextBox des
Kombinationsfelds. Falls er selbst einen Eintrag eingibt, erscheint dieser
ebenfalls dort. Die Eigenschaft Text enthält den Inhalt dieser TextBox,
also immer den Wert des Kombinationsfelds.
� Das zweite Kombinationsfeld hat den DropDownStyle DropDownList. Es
gibt also keine TextBox. Wie beim Listenfeld ermitteln Sie die Auswahl
des Benutzers über die Eigenschaft SelectedItem.
� Das dritte Kombinationsfeld hat den DropDownStyle Simple. Im Pro-
gramm kann es genauso wie das erste Kombinationsfeld behandelt
werden. Die Eigenschaft Text beinhaltet also immer den Wert des Kom-
binationsfelds.
Übung
Übung ÜListenfeldSchreiben Sie ein Programm, das zwei Listenfelder beinhaltet, in denen je-
weils mehrere Elemente markiert werden können. Zwischen den beiden
Listenfeldern befinden sich zwei Buttons, jeweils mit einem Pfeil nach
rechts bzw. nach links, siehe Abbildung 2.47. Bei Betätigung eines der
3703.book Seite 111 Donnerstag, 3. September 2015 2:52 14
2 Grundlagen
112
beiden Buttons sollen die ausgewählten Elemente in Pfeilrichtung aus der
einen Liste in die andere Liste verschoben werden, siehe Abbildung 2.48.
Abbildung 2.47 Liste vor dem Verschieben
Abbildung 2.48 Liste nach dem Verschieben
Bei der Lösung kann neben der Eigenschaft SelectedItems z. B. auch die Ei-
genschaft SelectedIndices genutzt werden. Eine solche Auflistung beinhal-
tet dann nicht die ausgewählten Einträge, sondern deren Indizes. Mit dem
Löschen mehrerer Einträge aus einem Listenfeld sollten Sie vom Ende der
Liste her beginnen. Der Grund hierfür ist: Löschen Sie eines der vorderen
Elemente zuerst, stimmen die Indizes in der Auflistung SelectedIndices
nicht mehr.
3703.book Seite 112 Donnerstag, 3. September 2015 2:52 14
517
Anhang B
Lösungen der Übungsaufgaben
Die Bearbeitung der Beispiele, das Verständnis für ihren Aufbau sowie das
selbständige Lösen der Übungen sind ein wichtiger Schritt beim Erlernen
der Programmierung. In diesem Abschnitt finden Sie jeweils eine Lösungs-
möglichkeit zu jeder Übung. Lassen Sie sich nicht irritieren, wenn Ihre
Lösung anders aussieht. Es ist in erster Linie wichtig, dass das Ergebnis
stimmt. Vielleicht bietet Ihnen die hier vorliegende Lösung aber auch
einen Denkanstoß zur Verbesserung.
B.1 Lösung der Übungsaufgabe aus Kapitel 1
B.1.1 Lösung ÜName
Public Class Form1Private Sub cmdMyName_Click(sender As Object,
e As EventArgs) Handles cmdMyName.ClicklblMyName.Text = "Bodo Basic"
End Sub
Private Sub cmdEnde_Click(sender As Object,e As EventArgs) Handles cmdEnde.Click
Close()End Sub
End Class
B.2 Lösungen der Übungsaufgaben aus Kapitel 2
B.2.1 Lösung ÜDatentypen
Public Class Form1Private Sub cmdAnzeigen_Click(...) Handles ...
Dim nachname, vorname As StringDim strasse, plz, ort As StringDim alter As IntegerDim geburtsdatum As Date
3703.book Seite 517 Donnerstag, 3. September 2015 2:52 14
B Lösungen der Übungsaufgaben
518
nachname = "Basic"vorname = "Bodo"strasse = "Bergstraße 34"plz = "09445"ort = "Brunnstadt"alter = 27geburtsdatum = "18.05.1988"
lblA.Text = "Adresse: " & vbCrLf & vorname & " " &nachname & vbCrLf & strasse & vbCrLf & plz & " " &ort & vbCrLf & vbCrLf & "geb.: " & geburtsdatum &vbCrLf & "Alter: " & alter
End SubEnd Class
B.2.2 Lösung ÜGültigkeitsbereich
Public Class Form1Private x As Double
Private Sub cmdAnzeigen1_Click(...) Handles ...Dim y As Doubley = y + 0.1x = x + 0.1lblA.Text = "x: " & x & vbCrLf & "y: " & y
End Sub
Private Sub cmdAnzeigen2_Click(...) Handles ...Dim z As Doublez = z + 0.1x = x + 0.1lblA.Text = "x: " & x & vbCrLf & "z: " & z
End SubEnd Class
3703.book Seite 518 Donnerstag, 3. September 2015 2:52 14
B.2 Lösungen der Übungsaufgaben aus Kapitel 2
519
B.2.3 Lösung ÜRechenoperatoren
Public Class Form1Private Sub cmdAnzeigen1_Click(...) Handles ...
Dim x As Doublex = 3 * -2.5 + 4 * 2lblA.Text = x
End Sub
Private Sub cmdAnzeigen2_Click(...) Handles ...Dim x As Doublex = 3 * (-2.5 + 4) * 2lblA.Text = x
End SubEnd Class
B.2.4 Lösung ÜVergleichsoperatoren
Public Class Form1Private Sub cmdAnzeigen1_Click(...) Handles ...
Dim p As Booleanp = 12 - 3 >= 4 * 2.5lblA.Text = p
End Sub
Private Sub cmdAnzeigen2_Click(...) Handles ...Dim p As Booleanp = "Maier" Like "M??er"lblA.Text = p
End SubEnd Class
B.2.5 Lösung ÜLogischeOperatoren
Public Class Form1Private Sub cmdAnzeigen1_Click(...) Handles ...
Dim p As Booleanp = 4 > 3 And -4 > -3lblA.Text = p
End Sub
3703.book Seite 519 Donnerstag, 3. September 2015 2:52 14
B Lösungen der Übungsaufgaben
520
Private Sub cmdAnzeigen2_Click(...) Handles ...Dim p As Booleanp = 4 > 3 Or -4 > -3lblA.Text = p
End SubEnd Class
B.2.6 Lösung ÜOperatoren
1: False, 2: True, 3: True, 4: True, 5: True, 6: False, 7: True, 8: False
B.2.7 Lösung ÜPanelZeitgeber
Public Class Form1Private Sub cmdStart_Click(...) Handles ...
tim1.Enabled = TrueEnd Sub
Private Sub tim1_Tick(...) Handles tim1.Tickpan1.Location = New Point(pan1.Location.X - 5,
pan1.Location.Y - 5)pan2.Location = New Point(pan2.Location.X + 5,
pan2.Location.Y - 5)pan3.Location = New Point(pan3.Location.X - 5,
pan3.Location.Y + 5)pan4.Location = New Point(pan4.Location.X + 5,
pan4.Location.Y + 5)End Sub
End Class
B.2.8 Lösung ÜKran
Bezeichnungen:
� f: Fundament
� s: senkrechtes Hauptelement
� a: waagerechter Ausleger
� h: senkrechter Haken am Ausleger
3703.book Seite 520 Donnerstag, 3. September 2015 2:52 14
B.2 Lösungen der Übungsaufgaben aus Kapitel 2
521
Public Class Form1Private Sub cmdHakenAus_Click(...) Handles ...
h.Height = h.Height + 10End Sub
Private Sub cmdHakenEin_Click(...) Handles ...h.Height = h.Height - 10
End Sub
Private Sub cmdAuslegerAus_Click(...) Handles ...a.Width = a.Width + 10a.Location = New Point(a.Location.X - 10, a.Location.Y)h.Location = New Point(h.Location.X - 10, h.Location.Y)
End Sub
Private Sub cmdAuslegerEin_Click(...) Handles ...a.Width = a.Width - 10a.Location = New Point(a.Location.X + 10, a.Location.Y)h.Location = New Point(h.Location.X + 10, h.Location.Y)
End Sub
Private Sub cmdKranRechts_Click(...) Handles ...f.Location = New Point(f.Location.X + 10, f.Location.Y)s.Location = New Point(s.Location.X + 10, s.Location.Y)a.Location = New Point(a.Location.X + 10, a.Location.Y)h.Location = New Point(h.Location.X + 10, h.Location.Y)
End Sub
Private Sub cmdKranLinks_Click(...) Handles ...f.Location = New Point(f.Location.X - 10, f.Location.Y)s.Location = New Point(s.Location.X - 10, s.Location.Y)a.Location = New Point(a.Location.X - 10, a.Location.Y)h.Location = New Point(h.Location.X - 10, h.Location.Y)
End Sub
Private Sub cmdKranAus_Click(...) Handles ...s.Height = s.Height + 10s.Location = New Point(s.Location.X, s.Location.Y - 10)a.Location = New Point(a.Location.X, a.Location.Y - 10)h.Location = New Point(h.Location.X, h.Location.Y - 10)
3703.book Seite 521 Donnerstag, 3. September 2015 2:52 14
B Lösungen der Übungsaufgaben
522
End Sub
Private Sub cmdKranEin_Click(...) Handles ...s.Height = s.Height - 10s.Location = New Point(s.Location.X, s.Location.Y + 10)a.Location = New Point(a.Location.X, a.Location.Y + 10)h.Location = New Point(h.Location.X, h.Location.Y + 10)
End SubEnd Class
B.2.9 Lösung ÜSteuerbetrag, zwei Möglichkeiten
Public Class Form1Private Sub cmdBerechnen1_Click(...) Handles ...
Dim gehalt, steuersatz, steuerbetrag As Doublegehalt = Convert.ToDouble(txtGehalt.Text)
If gehalt <= 12000 Thensteuersatz = 12
ElseIf gehalt <= 20000 Thensteuersatz = 15
ElseIf gehalt <= 30000 Thensteuersatz = 20
Elsesteuersatz = 25
End If
steuerbetrag = gehalt * steuersatz / 100lblSteuerbetrag.Text = steuerbetrag
End Sub
Private Sub cmdBerechnen2_Click(...) Handles ...Dim gehalt, steuersatz, steuerbetrag As Doublegehalt = Convert.ToDouble(txtGehalt.Text)
Select Case gehaltCase Is <= 12000
steuersatz = 12Case Is <= 20000
steuersatz = 15
3703.book Seite 522 Donnerstag, 3. September 2015 2:52 14
B.2 Lösungen der Übungsaufgaben aus Kapitel 2
523
Case Is <= 30000steuersatz = 20
Case Elsesteuersatz = 25
End Select
steuerbetrag = gehalt * steuersatz / 100lblSteuerbetrag.Text = steuerbetrag
End SubEnd Class
B.2.10 Lösung ÜKranVerzweigung
Bezeichnungen:
� f: Fundament
� s: senkrechtes Hauptelement
� a: waagerechter Ausleger
� h: senkrechter Haken am Ausleger
Public Class Form1Private Sub cmdHakenAus_Click(...) Handles ...
If h.Location.Y + h.Height + 5 < f.Location.Y Thenh.Height = h.Height + 10
End IfEnd Sub
Private Sub cmdHakenEin_Click(...) Handles ...If h.Height > 15 Then
h.Height = h.Height - 10End If
End Sub
Private Sub cmdAuslegerAus_Click(...) Handles ...If a.Location.X > 15 Then
a.Width = a.Width + 10a.Location = New Point(a.Location.X - 10, a.Location.Y)h.Location = New Point(h.Location.X - 10, h.Location.Y)
End IfEnd Sub
3703.book Seite 523 Donnerstag, 3. September 2015 2:52 14
B Lösungen der Übungsaufgaben
524
Private Sub cmdAuslegerEin_Click(...) Handles ...If a.Width > 30 Then
a.Width = a.Width - 10a.Location = New Point(a.Location.X + 10, a.Location.Y)h.Location = New Point(h.Location.X + 10, h.Location.Y)
End IfEnd Sub
Private Sub cmdKranRechts_Click(...) Handles ...If f.Location.X < 215 Then
f.Location = New Point(f.Location.X + 10, f.Location.Y)s.Location = New Point(s.Location.X + 10, s.Location.Y)a.Location = New Point(a.Location.X + 10, a.Location.Y)h.Location = New Point(h.Location.X + 10, h.Location.Y)
End IfEnd Sub
Private Sub cmdKranLinks_Click(...) Handles ...If f.Location.X > 15 And a.Location.X > 15 Then
f.Location = New Point(f.Location.X - 10, f.Location.Y)s.Location = New Point(s.Location.X - 10, s.Location.Y)a.Location = New Point(a.Location.X - 10, a.Location.Y)h.Location = New Point(h.Location.X - 10, h.Location.Y)
End IfEnd Sub
Private Sub cmdKranAus_Click(...) Handles ...If s.Location.Y > 15 Then
s.Height = s.Height + 10s.Location = New Point(s.Location.X, s.Location.Y - 10)a.Location = New Point(a.Location.X, a.Location.Y - 10)h.Location = New Point(h.Location.X, h.Location.Y - 10)
End IfEnd Sub
Private Sub cmdKranEin_Click(...) Handles ...If h.Location.Y + h.Height + 5 < f.Location.Y Then
s.Height = s.Height - 10s.Location = New Point(s.Location.X, s.Location.Y + 10)a.Location = New Point(a.Location.X, a.Location.Y + 10)
3703.book Seite 524 Donnerstag, 3. September 2015 2:52 14
B.2 Lösungen der Übungsaufgaben aus Kapitel 2
525
h.Location = New Point(h.Location.X, h.Location.Y + 10)End If
End SubEnd Class
B.2.11 Lösung ÜKranOptionen
Bezeichnungen:
� f: Fundament
� s: senkrechtes Hauptelement
� a: waagerechter Ausleger
� h: senkrechter Haken am Ausleger
Public Class Form1Private Sub cmdStart_Click(...) Handles ...
tim1.Enabled = TrueEnd Sub
Private Sub cmdStop_Click(...) Handles ...tim1.Enabled = False
End Sub
Private Sub tim1_Tick(...) Handles tim1.TickIf optHakenAus.Checked Then
If h.Location.Y + h.Height + 5 < f.Location.Y Thenh.Height = h.Height + 10
Elsetim1.Enabled = False
End IfElseIf optHakenEin.Checked Then
If h.Height > 15 Thenh.Height = h.Height - 10
Elsetim1.Enabled = False
End IfElseIf optAuslegerAus.Checked Then
If a.Location.X > 15 Thena.Width = a.Width + 10a.Location = New Point(a.Location.X - 10,
a.Location.Y)
3703.book Seite 525 Donnerstag, 3. September 2015 2:52 14
B Lösungen der Übungsaufgaben
526
h.Location = New Point(h.Location.X - 10,h.Location.Y)
Elsetim1.Enabled = False
End IfElseIf optAuslegerEin.Checked Then
If a.Width > 25 Thena.Width = a.Width - 10a.Location = New Point(a.Location.X + 10,
a.Location.Y)h.Location = New Point(h.Location.X + 10,
h.Location.Y)Else
tim1.Enabled = FalseEnd If
ElseIf optKranRechts.Checked ThenIf f.Location.X < 215 Then
f.Location = New Point(f.Location.X + 10,f.Location.Y)
s.Location = New Point(s.Location.X + 10,s.Location.Y)
a.Location = New Point(a.Location.X + 10,a.Location.Y)
h.Location = New Point(h.Location.X + 10,h.Location.Y)
Elsetim1.Enabled = False
End IfElseIf optKranLinks.Checked Then
If f.Location.X > 15 And a.Location.X > 15 Thenf.Location = New Point(f.Location.X - 10,
f.Location.Y)s.Location = New Point(s.Location.X - 10,
s.Location.Y)a.Location = New Point(a.Location.X - 10,
a.Location.Y)h.Location = New Point(h.Location.X - 10,
h.Location.Y)Else
tim1.Enabled = False
3703.book Seite 526 Donnerstag, 3. September 2015 2:52 14
B.2 Lösungen der Übungsaufgaben aus Kapitel 2
527
End IfElseIf optKranAus.Checked Then
If s.Location.Y > 15 Thens.Height = s.Height + 10s.Location = New Point(s.Location.X,
s.Location.Y - 10)a.Location = New Point(a.Location.X,
a.Location.Y - 10)h.Location = New Point(h.Location.X,
h.Location.Y - 10)Else
tim1.Enabled = FalseEnd If
ElseIf optKranEin.Checked ThenIf h.Location.Y + h.Height + 5 < f.Location.Y Then
s.Height = s.Height - 10s.Location = New Point(s.Location.X,
s.Location.Y + 10)a.Location = New Point(a.Location.X,
a.Location.Y + 10)h.Location = New Point(h.Location.X,
h.Location.Y + 10)Else
tim1.Enabled = FalseEnd If
End IfEnd Sub
End Class
B.2.12 Lösung ÜForNext1
Public Class Form1Private Sub cmdAnzeigen_Click(...) Handles ...
Dim d As DoublelblA.Text = ""For d = 35 To 20 Step -2.5
lblA.Text &= d & vbCrLfNext d
End SubEnd Class
3703.book Seite 527 Donnerstag, 3. September 2015 2:52 14
B Lösungen der Übungsaufgaben
528
B.2.13 Lösung ÜForNext2
Public Class Form1Private Sub cmdAnzeigen_Click(...) Handles ...
Dim d, summe, zähler, mittelwert As Double
summe = 0zähler = 0lblA.Text = ""
For d = 35 To 20 Step -2.5lblA.Text &= d & vbCrLfsumme += dzähler += 1
Next d
mittelwert = summe / zählerlblA.Text &= vbCrLf & "Summe: " & summe & vbCrLf &
"Mittelwert: " & mittelwert & vbCrLfEnd Sub
End Class
B.2.14 Lösung ÜDoLoop
Public Class Form1Private Sub cmdHalbieren_Click(...) Handles ...
Dim d As Doubled = Convert.ToDouble(txtEingabe.Text)
lblA.Text = ""Do While d > 0.001
d = d / 2lblA.Text &= d & vbCrLf
Loop
End SubEnd Class
3703.book Seite 528 Donnerstag, 3. September 2015 2:52 14
B.2 Lösungen der Übungsaufgaben aus Kapitel 2
529
B.2.15 Lösung ÜZahlenraten
Public Class Form1Private zahl As Integer
Private Sub cmdPrüfen_Click(...) Handles ...Dim eingabe As Integereingabe = Convert.ToInt32(txtEingabe.Text)
If eingabe > zahl ThenlblA.Text = "Die Zahl " & eingabe & " ist zu groß"
ElseIf eingabe < zahl ThenlblA.Text = "Die Zahl " & eingabe & " ist zu klein"
ElselblA.Text = "Die Zahl " & eingabe & " stimmt"
End IfEnd Sub
Private Sub Form1_Load(...) Handles MyBase.LoadRandomize()zahl = Math.Floor(Rnd() * 100) + 1
End SubEnd Class
B.2.16 Lösung ÜSteuertabelle
Public Class Form1Private Sub cmdAnzeigen_Click(...) Handles ...
Dim gehalt As DoubleDim steuersatz As DoubleDim steuerbetrag As DoubleDim netto As Double
lblA.Text = ""For gehalt = 5000 To 35000 Step 3000
If gehalt <= 12000 Thensteuersatz = 12
ElseIf gehalt <= 20000 Thensteuersatz = 15
ElseIf gehalt <= 30000 Thensteuersatz = 20
3703.book Seite 529 Donnerstag, 3. September 2015 2:52 14
B Lösungen der Übungsaufgaben
530
Elsesteuersatz = 25
End If
steuerbetrag = gehalt * steuersatz / 100netto = gehalt - steuerbetraglblA.Text &= gehalt & " €, " & steuersatz & " %, " &
steuerbetrag & " €, " & netto & " €" & vbCrLfNext gehalt
End SubEnd Class
B.2.17 Lösung ÜListenfeld
Public Class Form1Private Sub Form1_Load(...) Handles MyBase.Load
lstLinks.Items.Add("Malta")lstLinks.Items.Add("Zypern")lstLinks.Items.Add("Slowenien")lstLinks.Items.Add("Estland")lstLinks.Items.Add("Rumänien")
lstRechts.Items.Add("Belgien")lstRechts.Items.Add("Spanien")lstRechts.Items.Add("Italien")lstRechts.Items.Add("Portugal")lstRechts.Items.Add("Dänemark")
End Sub
Private Sub cmdRechts_Click(...) Handles ...For Each s As String In lstLinks.SelectedItems
lstRechts.Items.Add(s)Next s
Dim i As IntegerFor i = lstLinks.SelectedItems.Count - 1 To 0 Step -1
lstLinks.Items.RemoveAt(lstLinks.SelectedIndices(i))Next i
End Sub
3703.book Seite 530 Donnerstag, 3. September 2015 2:52 14
B.3 Lösungen der Übungsaufgaben aus Kapitel 4
531
Private Sub cmdLinks_Click(...) Handles ...For Each s As String In lstRechts.SelectedItems
lstLinks.Items.Add(s)Next s
Dim i As IntegerFor i = lstRechts.SelectedItems.Count - 1 To 0 Step -1
lstRechts.Items.RemoveAt(lstRechts.SelectedIndices(i))Next i
End SubEnd Class
B.3 Lösungen der Übungsaufgaben aus Kapitel 4
B.3.1 Lösung ÜEnabled
Public Class Form1Private Sub Form1_Load(...) Handles MyBase.Load
lstLand.Items.Add("Liechtenstein")lstLand.Items.Add("Malta")lstLand.Items.Add("Andorra")lstLand.Items.Add("San Marino")lstLand.Items.Add("Monaco")
End Sub
Private Sub lstLand_SelectedIndexChanged(...) _Handles lstLand.SelectedIndexChanged
If lstLand.SelectedItems.Count > 0 ThencmdLöschen.Enabled = True
ElsecmdLöschen.Enabled = False
End IfEnd Sub
Private Sub cmdLöschen_Click(...) Handles ...lstLand.Items.RemoveAt(lstLand.SelectedIndex)
End SubEnd Class
3703.book Seite 531 Donnerstag, 3. September 2015 2:52 14
Auf einen Blick
Auf einen Blick
1 Einführung ................................................................................................................... 17
2 Grundlagen .................................................................................................................. 41
3 Fehlerbehandlung ..................................................................................................... 113
4 Erweiterte Grundlagen ............................................................................................ 125
5 Objektorientierte Programmierung .................................................................... 187
6 Wichtige Klassen in .NET ......................................................................................... 239
7 Weitere Elemente eines Windows-Programms .............................................. 311
8 Datenbankanwendungen mit ADO.NET ............................................................ 365
9 Internetanwendungen mit ASP.NET ................................................................... 419
10 Zeichnen mit GDI+ .................................................................................................... 445
11 Beispielprojekte ......................................................................................................... 461
12 Windows Presentation Foundation .................................................................... 485
3703.book Seite 3 Donnerstag, 3. September 2015 2:52 14
5
Inhalt
1 Einführung 17
1.1 Aufbau dieses Buchs .............................................................................................................. 17
1.2 Visual Studio 2015 ................................................................................................................... 17
1.3 Mein erstes Windows-Programm .................................................................................... 18
1.4 Visual-Basic-Entwicklungsumgebung ........................................................................... 19
1.4.1 Ein neues Projekt ...................................................................................................... 19
1.4.2 Einfügen von Steuerelementen ........................................................................... 21
1.4.3 Arbeiten mit dem Eigenschaften-Fenster ........................................................ 22
1.4.4 Speichern eines Projekts ........................................................................................ 25
1.4.5 Das Codefenster ........................................................................................................ 25
1.4.6 Schreiben von Programmcode ............................................................................. 27
1.4.7 Kommentare .............................................................................................................. 29
1.4.8 Starten, Ausführen und Beenden des Programms ........................................ 29
1.4.9 Ausführbares Programm ....................................................................................... 30
1.4.10 Projekt schließen, Projekt öffnen ........................................................................ 30
1.4.11 Übung ........................................................................................................................... 31
1.4.12 Regeln für Zeilenumbrüche .................................................................................. 31
1.5 Arbeiten mit Steuerelementen ......................................................................................... 32
1.5.1 Steuerelemente formatieren ................................................................................ 32
1.5.2 Steuerelemente kopieren ...................................................................................... 34
1.5.3 Eigenschaften zur Laufzeit ändern ..................................................................... 34
1.5.4 Vergabe und Verwendung von Namen ............................................................ 37
1.5.5 Verknüpfung von Texten, mehrzeilige Texte .................................................. 37
1.5.6 Eigenschaft BackColor, Farben allgemein ........................................................ 38
2 Grundlagen 41
2.1 Variablen und Datentypen .................................................................................................. 41
2.1.1 Namen und Werte ................................................................................................... 41
2.1.2 Deklarationen ............................................................................................................ 42
2.1.3 Datentypen ................................................................................................................. 42
3703.book Seite 5 Donnerstag, 3. September 2015 2:52 14
Inhalt
6
2.1.4 Gültigkeitsbereich .................................................................................................... 45
2.1.5 Konstanten ................................................................................................................. 48
2.1.6 Enumerationen ......................................................................................................... 50
2.2 Operatoren ................................................................................................................................. 51
2.2.1 Rechenoperatoren ................................................................................................... 52
2.2.2 Vergleichsoperatoren ............................................................................................. 54
2.2.3 Logische Operatoren ............................................................................................... 55
2.2.4 Verkettungsoperator .............................................................................................. 56
2.2.5 Zuweisungsoperatoren .......................................................................................... 57
2.2.6 Rangfolge der Operatoren .................................................................................... 57
2.3 Einfache Steuerelemente .................................................................................................... 59
2.3.1 Panel ............................................................................................................................. 59
2.3.2 Zeitgeber ..................................................................................................................... 61
2.3.3 Textfelder .................................................................................................................... 64
2.3.4 Zahlenauswahlfeld .................................................................................................. 68
2.4 Verzweigungen ........................................................................................................................ 69
2.4.1 Einzeiliges If ... Then ... Else .................................................................................... 70
2.4.2 If...Then...Else-Block ................................................................................................. 72
2.4.3 Select Case .................................................................................................................. 73
2.4.4 Funktion IIf ................................................................................................................. 74
2.4.5 Funktion Choose ....................................................................................................... 75
2.4.6 Übungen ..................................................................................................................... 76
2.5 Verzweigungen und Steuerelemente ............................................................................ 76
2.5.1 Kontrollkästchen ...................................................................................................... 77
2.5.2 Optionsschaltfläche ................................................................................................ 79
2.5.3 Mehrere Ereignisse in einer Prozedur behandeln ......................................... 82
2.5.4 Mehrere Gruppen von Optionsschaltflächen ................................................. 83
2.5.5 Prozedur ohne Ereignis, Modularisierung ....................................................... 86
2.5.6 Schieberegler ............................................................................................................. 87
2.6 Schleifen ...................................................................................................................................... 89
2.6.1 For ... Next ................................................................................................................... 89
2.6.2 Do ... Loop .................................................................................................................... 92
2.6.3 Ein Würfel ................................................................................................................... 96
2.6.4 With .............................................................................................................................. 96
2.6.5 Übungen ..................................................................................................................... 97
2.7 Schleifen und Steuerelemente .......................................................................................... 100
2.7.1 Listenfeld .................................................................................................................... 100
3703.book Seite 6 Donnerstag, 3. September 2015 2:52 14
Inhalt
7
2.7.2 Listenfeld füllen ........................................................................................................ 100
2.7.3 Wichtige Eigenschaften ......................................................................................... 101
2.7.4 For Each … In … ........................................................................................................... 103
2.7.5 Wechsel der Auswahl .............................................................................................. 104
2.7.6 Wichtige Methoden ................................................................................................. 105
2.7.7 Mehrfachauswahl .................................................................................................... 108
2.7.8 Kombinationsfelder ................................................................................................. 109
3 Fehlerbehandlung 113
3.1 Entwicklung eines Programms .......................................................................................... 113
3.2 Fehlerarten ................................................................................................................................. 114
3.3 Syntaxfehler und IntelliSense ............................................................................................ 115
3.4 Laufzeitfehler und Exception Handling ......................................................................... 117
3.4.1 Programm mit Laufzeitfehlern ............................................................................ 117
3.4.2 Einfaches Exception Handling ............................................................................. 119
3.4.3 Erweitertes Exception Handling .......................................................................... 121
3.5 Logische Fehler und Debugging ........................................................................................ 122
3.5.1 Haltepunkte und Einzelschrittverfahren .......................................................... 122
3.5.2 Überwachungsfenster ............................................................................................ 123
4 Erweiterte Grundlagen 125
4.1 Steuerelemente aktivieren ................................................................................................. 125
4.1.1 Ereignis Enter ............................................................................................................. 125
4.1.2 Eigenschaften Enabled und Visible .................................................................... 128
4.2 Bedienung per Tastatur ........................................................................................................ 131
4.2.1 Eigenschaften TabIndex und TabStop .............................................................. 131
4.2.2 Tastenkombination für Steuerelemente .......................................................... 132
4.3 Ereignisgesteuerte Programmierung ............................................................................. 133
4.3.1 Eine Ereigniskette ..................................................................................................... 133
4.3.2 Endlose Ereignisketten ........................................................................................... 135
4.3.3 Textfelder koppeln ................................................................................................... 136
3703.book Seite 7 Donnerstag, 3. September 2015 2:52 14
Inhalt
8
4.4 Mehrere Formulare ................................................................................................................ 138
4.4.1 Allgemeine Code-Module ...................................................................................... 142
4.5 Datenfelder ................................................................................................................................ 144
4.5.1 Eindimensionale Datenfelder .............................................................................. 144
4.5.2 Ein Feld durchsuchen .............................................................................................. 146
4.5.3 Weitere Feld-Operationen .................................................................................... 148
4.5.4 Mehrdimensionale Datenfelder .......................................................................... 150
4.5.5 Datenfelder initialisieren ...................................................................................... 154
4.5.6 Datenfelder sind dynamisch ................................................................................ 155
4.6 Benutzerdefinierte Datentypen ....................................................................................... 158
4.7 Prozeduren und Funktionen ............................................................................................... 161
4.7.1 Prozeduren ................................................................................................................. 162
4.7.2 Übergabe per Referenz ........................................................................................... 164
4.7.3 Funktionen ................................................................................................................. 167
4.7.4 Optionale Argumente ............................................................................................. 169
4.7.5 Beliebig viele Argumente ...................................................................................... 171
4.7.6 Datenfelder als Argumente .................................................................................. 173
4.7.7 Rekursiver Aufruf ..................................................................................................... 175
4.7.8 Übungen zu Prozeduren und Funktionen ........................................................ 177
4.8 Konsolenanwendung ............................................................................................................ 178
4.8.1 Anwendung erzeugen ............................................................................................ 178
4.8.2 Ein- und Ausgabe von Text ................................................................................... 178
4.8.3 Eingabe einer Zahl ................................................................................................... 180
4.8.4 Erfolgreiche Eingabe einer Zahl .......................................................................... 181
4.8.5 Ausgabe formatieren .............................................................................................. 182
4.8.6 Aufruf von der Kommandozeile .......................................................................... 183
5 Objektorientierte Programmierung 187
5.1 Was ist Objektorientierung? .............................................................................................. 187
5.2 Klasse, Eigenschaft, Methode, Objekt ........................................................................... 188
5.2.1 Objektverweis und Instanz ................................................................................... 191
5.3 Eigenschaftsmethode ........................................................................................................... 193
5.4 Konstruktor ................................................................................................................................ 195
3703.book Seite 8 Donnerstag, 3. September 2015 2:52 14
Inhalt
9
5.5 Namensräume .......................................................................................................................... 198
5.6 Referenzen, Vergleiche und Typen .................................................................................. 200
5.6.1 Referenzen .................................................................................................................. 200
5.6.2 Operator Is .................................................................................................................. 201
5.6.3 Objekte vergleichen ................................................................................................. 202
5.6.4 Typ eines Objekts ermitteln .................................................................................. 204
5.6.5 Typ eines Objekts durch Vergleich ermitteln .................................................. 205
5.7 Delegates .................................................................................................................................... 205
5.8 Statische Elemente ................................................................................................................. 208
5.9 Vererbung ................................................................................................................................... 211
5.10 Konstruktoren bei Vererbung ............................................................................................ 215
5.11 Polymorphie ............................................................................................................................... 217
5.12 Schnittstellen ............................................................................................................................ 221
5.13 Generische Typen .................................................................................................................... 225
5.13.1 Eine Liste von Zeichenketten ................................................................................ 225
5.13.2 Eine Liste von Objekten .......................................................................................... 228
5.13.3 Ein Dictionary von Objekten ................................................................................. 232
5.14 Eigene Klassenbibliotheken ................................................................................................ 235
5.14.1 DLL erstellen ............................................................................................................... 235
5.14.2 DLL nutzen .................................................................................................................. 237
6 Wichtige Klassen in .NET 239
6.1 Klasse String für Zeichenketten ........................................................................................ 239
6.1.1 Eigenschaften der Klasse String .......................................................................... 240
6.1.2 Trimmen ...................................................................................................................... 242
6.1.3 Splitten ......................................................................................................................... 243
6.1.4 Suchen .......................................................................................................................... 245
6.1.5 Einfügen ...................................................................................................................... 248
6.1.6 Löschen ........................................................................................................................ 250
6.1.7 Teilzeichenkette ermitteln .................................................................................... 251
6.1.8 Zeichen ersetzen ....................................................................................................... 253
6.1.9 Ausgabe formatieren .............................................................................................. 254
3703.book Seite 9 Donnerstag, 3. September 2015 2:52 14
Inhalt
10
6.2 Datum und Uhrzeit ................................................................................................................. 256
6.2.1 Eigenschaften von DateTime ............................................................................... 256
6.2.2 Rechnen mit Datum und Uhrzeit ....................................................................... 259
6.2.3 DateTimePicker ......................................................................................................... 261
6.3 Dateien und Verzeichnisse .................................................................................................. 264
6.3.1 Lesen aus einer Textdatei ...................................................................................... 265
6.3.2 Schreiben in eine Textdatei .................................................................................. 267
6.3.3 Sicheres Lesen aus einer Textdatei .................................................................... 268
6.3.4 Sicheres Schreiben in eine Textdatei ................................................................. 271
6.3.5 Datei mit wahlfreiem Zugriff ............................................................................... 272
6.3.6 Die Klassen File und Directory ............................................................................. 279
6.3.7 Das aktuelle Verzeichnis ........................................................................................ 280
6.3.8 Eine Liste der Dateien ............................................................................................. 281
6.3.9 Eine Liste der Dateien und Verzeichnisse ........................................................ 282
6.3.10 Informationen über Dateien und Verzeichnisse ........................................... 283
6.3.11 Bewegen in der Verzeichnishierarchie .............................................................. 284
6.4 XML-Dateien ............................................................................................................................. 286
6.4.1 Aufbau von XML-Dateien ...................................................................................... 286
6.4.2 Schreiben in eine XML-Datei ................................................................................ 288
6.4.3 Lesen aus einer XML-Datei .................................................................................... 289
6.4.4 Schreiben von Objekten ......................................................................................... 291
6.4.5 Lesen von Objekten ................................................................................................. 293
6.5 Rechnen mit der Klasse Math ............................................................................................ 295
6.6 Zugriff auf MS Office ............................................................................................................. 300
6.6.1 MS Word-Datei erstellen ....................................................................................... 302
6.6.2 MS Word-Datei lesen .............................................................................................. 305
6.6.3 MS Excel-Datei erstellen ........................................................................................ 306
6.6.4 MS Excel-Datei lesen ............................................................................................... 308
7 Weitere Elemente eines Windows-Programms 311
7.1 Hauptmenü ................................................................................................................................ 311
7.1.1 Erstellung des Hauptmenüs ................................................................................. 311
7.1.2 Code des Hauptmenüs ........................................................................................... 313
7.1.3 Klasse Font ................................................................................................................. 316
7.1.4 Schriftart ..................................................................................................................... 316
3703.book Seite 10 Donnerstag, 3. September 2015 2:52 14
Inhalt
11
7.1.5 Schriftgröße ................................................................................................................ 318
7.1.6 Schriftstil ..................................................................................................................... 319
7.2 Kontextmenü ............................................................................................................................ 320
7.2.1 Erstellung des Kontextmenüs .............................................................................. 320
7.2.2 Code des Kontextmenüs ........................................................................................ 321
7.3 Symbolleiste .............................................................................................................................. 322
7.3.1 Erstellung der Symbolleiste .................................................................................. 323
7.3.2 Code der Symbolleiste ............................................................................................ 324
7.4 Statusleiste ................................................................................................................................. 327
7.4.1 Erstellung der Statusleiste .................................................................................... 327
7.4.2 Code der Statusleiste .............................................................................................. 328
7.5 Eingabe-Dialogfeld ................................................................................................................. 329
7.6 Ausgabe-Dialogfeld ................................................................................................................ 333
7.7 Standarddialogfelder ............................................................................................................. 339
7.7.1 Datei öffnen ............................................................................................................... 339
7.7.2 Datei speichern unter ............................................................................................. 341
7.7.3 Verzeichnis auswählen ........................................................................................... 343
7.7.4 Farbe auswählen ...................................................................................................... 344
7.7.5 Schrifteigenschaften auswählen ........................................................................ 345
7.8 Steuerelement ListView ....................................................................................................... 347
7.9 Steuerelement Chart .............................................................................................................. 350
7.10 Steuerelement DataGridView ........................................................................................... 355
7.11 Lokalisierung ............................................................................................................................. 360
8 Datenbankanwendungen mit ADO.NET 365
8.1 Was sind relationale Datenbanken? ............................................................................... 365
8.1.1 Beispiel »Lager« ......................................................................................................... 366
8.1.2 Indizes .......................................................................................................................... 369
8.1.3 Relationen ................................................................................................................... 370
8.1.4 Übungen ...................................................................................................................... 375
8.2 Anlegen einer Datenbank in MS Access ........................................................................ 376
8.2.1 Aufbau von MS Access ............................................................................................ 376
3703.book Seite 11 Donnerstag, 3. September 2015 2:52 14
Inhalt
12
8.2.2 Datenbankentwurf in MS Access 2013 .............................................................. 378
8.2.3 Übungen ..................................................................................................................... 382
8.3 Datenbankzugriff mit Visual Basic .................................................................................. 382
8.3.1 Beispiel-Datenbank ................................................................................................. 383
8.3.2 Ablauf eines Zugriffs ............................................................................................... 384
8.3.3 Verbindung ................................................................................................................ 384
8.3.4 SQL-Befehl .................................................................................................................. 384
8.3.5 OleDb ........................................................................................................................... 385
8.3.6 Auswahlabfrage ....................................................................................................... 385
8.3.7 Aktionsabfrage .......................................................................................................... 388
8.4 SQL-Befehle ................................................................................................................................ 390
8.4.1 Auswahl mit »SELECT« ........................................................................................... 390
8.4.2 Ändern mit »UPDATE« ............................................................................................ 395
8.4.3 Löschen mit »DELETE« ............................................................................................ 395
8.4.4 Einfügen mit »INSERT« ........................................................................................... 396
8.4.5 Typische Fehler in SQL ............................................................................................ 396
8.5 Ein Verwaltungsprogramm ................................................................................................ 398
8.5.1 Initialisierung ............................................................................................................ 398
8.5.2 Alle Datensätze sehen ............................................................................................ 399
8.5.3 Datensatz einfügen ................................................................................................. 401
8.5.4 Datensatz ändern .................................................................................................... 403
8.5.5 Datensatz löschen ................................................................................................... 406
8.5.6 Datensatz suchen .................................................................................................... 408
8.6 Abfragen über mehrere Tabellen ..................................................................................... 410
8.7 Verbindung zu MySQL ........................................................................................................... 415
8.7.1 .NET-Treiber ............................................................................................................... 415
9 Internetanwendungen mit ASP.NET 419
9.1 Grundlagen von Internetanwendungen ...................................................................... 419
9.1.1 Statische Internetanwendungen ........................................................................ 419
9.1.2 Dynamische Internetanwendungen ................................................................. 420
9.1.3 Vorteile von ASP.NET .............................................................................................. 421
9.2 Ein lokaler Webserver ........................................................................................................... 421
9.2.1 Eine erste Internetanwendung ........................................................................... 422
3703.book Seite 12 Donnerstag, 3. September 2015 2:52 14
Inhalt
13
9.3 Eine erste ASP.NET-Anwendung ....................................................................................... 424
9.3.1 Fehlerhafte Programmierung .............................................................................. 426
9.4 Formatierung von Internetseiten ..................................................................................... 427
9.5 Senden und Auswerten von Formulardaten ............................................................... 428
9.6 Weitere Formularelemente ................................................................................................ 431
9.7 Ein Kalenderelement .............................................................................................................. 434
9.8 ASP.NET und ADO.NET .......................................................................................................... 436
9.9 Datenbank im Internet ändern ......................................................................................... 439
10 Zeichnen mit GDI+ 445
10.1 Grundlagen von GDI+ ............................................................................................................ 445
10.2 Linie, Rechteck, Polygon und Ellipse zeichnen ........................................................... 445
10.2.1 Grundeinstellungen ................................................................................................ 446
10.2.2 Linie ............................................................................................................................... 447
10.2.3 Rechteck ....................................................................................................................... 448
10.2.4 Polygon ........................................................................................................................ 448
10.2.5 Ellipse ............................................................................................................................ 449
10.2.6 Dicke und Farbe ändern, Zeichnung löschen .................................................. 450
10.3 Text schreiben ........................................................................................................................... 451
10.4 Bilder darstellen ....................................................................................................................... 453
10.5 Dauerhaft zeichnen ................................................................................................................ 455
10.6 Zeichnen einer Funktion ....................................................................................................... 457
11 Beispielprojekte 461
11.1 Spielprogramm Tetris ............................................................................................................ 461
11.1.1 Spielablauf .................................................................................................................. 461
11.1.2 Programmbeschreibung ........................................................................................ 462
11.1.3 Steuerelemente ........................................................................................................ 463
11.1.4 Initialisierung des Programms ............................................................................. 464
11.1.5 Erzeugen eines neuen Panels ............................................................................... 466
3703.book Seite 13 Donnerstag, 3. September 2015 2:52 14
Inhalt
14
11.1.6 Der Zeitgeber ............................................................................................................. 467
11.1.7 Panel löschen ............................................................................................................. 468
11.1.8 Panel seitlich bewegen ........................................................................................... 472
11.1.9 Panel nach unten bewegen .................................................................................. 473
11.1.10 Pause ............................................................................................................................ 473
11.2 Lernprogramm Vokabeln ..................................................................................................... 474
11.2.1 Benutzung des Programms .................................................................................. 474
11.2.2 Erweiterung des Programms ................................................................................ 476
11.2.3 Initialisierung des Programms ............................................................................. 476
11.2.4 Ein Test beginnt ........................................................................................................ 477
11.2.5 Zwei Hilfsprozeduren ............................................................................................. 479
11.2.6 Die Antwort prüfen ................................................................................................. 481
11.2.7 Das Benutzermenü .................................................................................................. 482
12 Windows Presentation Foundation 485
12.1 Layout ........................................................................................................................................... 486
12.2 Steuerelemente ....................................................................................................................... 489
12.3 Frame-Anwendung ................................................................................................................. 492
12.4 Zweidimensionale Grafik .................................................................................................... 495
12.5 Dreidimensionale Grafik ...................................................................................................... 498
12.6 Animation ................................................................................................................................... 502
12.7 WPF und Windows Forms ................................................................................................... 505
12.7.1 Windows Forms in WPF ......................................................................................... 505
12.7.2 WPF in Windows Forms ......................................................................................... 507
Anhang 511
A Installation und technische Hinweise ............................................................................ 511
A.1 Installation von Visual Studio Community 2015 ............................................ 511
A.2 Arbeiten mit einer Formularvorlage .................................................................. 511
A.3 Arbeiten mit einer Projektvorlage ...................................................................... 513
3703.book Seite 14 Donnerstag, 3. September 2015 2:52 14
Inhalt
15
A.4 Weitergabe eigener Windows-Programme .................................................... 513
A.5 Konfigurationsdaten ............................................................................................... 515
B Lösungen der Übungsaufgaben ........................................................................................ 517
B.1 Lösung der Übungsaufgabe aus Kapitel 1 ........................................................ 517
B.2 Lösungen der Übungsaufgaben aus Kapitel 2 ................................................ 517
B.3 Lösungen der Übungsaufgaben aus Kapitel 4 ................................................ 531
B.4 Lösungen der Übungsaufgaben aus Kapitel 8 ................................................ 535
Index ............................................................................................................................................................... 537
3703.book Seite 15 Donnerstag, 3. September 2015 2:52 14
Index
537
Index
^ ......................................................................................... 52
^=....................................................................................... 57
_ ....................................................................................... 392
? .......................................................................................... 54
* ................................................................................... 52, 54
*=........................................................................................ 57
/.......................................................................................... 52
/= ....................................................................................... 57
\ .......................................................................................... 52
& .............................................................. 37, 56, 132, 313
&=...................................................................................... 57
#............................................................................. 183, 256
% ...................................................................................... 392
+ ......................................................................................... 52
+=....................................................................................... 57
< ................................................................................ 54, 391
<=.............................................................................. 54, 391
<>.............................................................................. 54, 391
-=........................................................................................ 57
= ......................................................................... 54, 57, 391
> ................................................................................ 54, 391
>=.............................................................................. 54, 391
1:1-Relation .................................................................. 370
1:n-Relation ....................................................... 368, 371
3D-Körper .................................................................... 498
A
Abfrage
Datenbank .............................................................. 377
accdb-Datei.................................................................. 378
Accessor........................................................................ 194
Acos() ............................................................................. 295
Add()
ArrayList .................................................................. 401
Columns................................................................... 350
Controls ................................................................... 467
Datum und Uhrzeit ............................................. 259
Documents ............................................................. 303
generische Liste............................................ 225, 467
Items ......................................................................... 350
Listenfeld ................................................................. 100
Paragraphs ............................................................. 303
Add() (Forts.)
Series ......................................................................... 353
SubItems.................................................................. 350
Tables........................................................................ 304
Worksheets ............................................................. 307
AddHandler ................................................................ 207
AddHours().................................................................. 259
Addition .......................................................................... 52
AddMilliseconds() .................................................... 259
AddMinutes() ............................................................. 259
AddMonths() .............................................................. 259
AddressOf .................................................................... 207
AddSeconds().............................................................. 259
AddXY()......................................................................... 353
AddYears() ................................................................... 259
ADO.NET....................................................................... 365
Aktionsabfrage .......................................................... 388
Aktivierungsreihenfolge ....................................... 131
AND (SQL) .................................................................... 392
And (VB) .......................................................................... 55
Anführungszeichen.................................................... 45
Angle
LabelStyle ................................................................ 354
Animation
3D-Körper................................................................ 502
Anweisung ..................................................................... 27
mehrere....................................................................... 70
mehrfach durchlaufen .......................................... 89
Anwendung
mehrsprachig ........................................................ 360
MS Excel................................................................... 307
MS Word .................................................................. 303
weitergeben............................................................ 513
App.config ................................................................... 515
Append ......................................................................... 266
ArcSegment ................................................................ 497
args ................................................................................. 184
Argument .................................................................... 163
beliebig viele .......................................................... 171
optional ................................................................... 169
ArgumentOutOfRangeException ...................... 248
Arkusfunktion ........................................................... 295
Array, Klasse ............................................................... 148
As.............................................................................. 44, 167
3703.book Seite 537 Donnerstag, 3. September 2015 2:52 14
Index
538
Asin() ............................................................................. 295
asp:Calendar............................................................... 436
asp:Label ...................................................................... 428
ASP.NET ........................................................................ 419
Programmierfehler .............................................. 426
Atan()............................................................................. 295
Attached Event .......................................................... 488
Attached Property.................................................... 488
AttributeCount
XmlTextReader ...................................................... 290
Aufzählung .................................................................... 50
Ausführbare Datei....................................................... 30
Ausgabe
formatieren ............................................................. 182
mehrzeilig .................................................................. 37
Ausgabe-Dialogfeld ................................................. 333
Auskommentierung .................................................. 29
Austauschformat...................................................... 243
Auswahlabfrage ........................................................ 385
Axis ................................................................................ 353
AxisX
ChartArea ................................................................ 353
AxisY
ChartArea ................................................................ 353
B
BackColor........................................................................ 38
Basisklasse................................................................... 212
Methode erreichen ............................................... 213
Bedingung ...................................................................... 69
Befehlsschaltfläche..................................................... 21
Bericht
Datenbank............................................................... 377
Bezeichnungsfeld ........................................................ 21
Beziehung........................................................... 365, 368
erstellen .................................................................... 381
Bézierkurve................................................................. 495
Bild
in Zeichnung ........................................................... 453
Bildlaufleiste ................................................................. 64
Bitmap .......................................................................... 350
body ............................................................................... 423
Bookmarks
Document ................................................................ 304
Boolean............................................................................ 43
Border Style ................................................................... 24
Borders
Table .......................................................................... 304
Breakpoint .................................................................. 122
Browser ........................................................................ 419
Brush ............................................................................. 445
Button .............................................................................. 21
ByRef ............................................................................. 165
Byte ................................................................................... 42
ByVal ............................................................................. 166
C
Calendar ....................................................................... 436
Canvas .......................................................................... 487
Left.............................................................................. 488
Top ............................................................................. 488
Cascading Style Sheets ........................................... 420
Case ................................................................................... 73
Case Else.......................................................................... 73
Catch.............................................................................. 120
Ceiling() ........................................................................ 295
Cell
Table .......................................................................... 304
Cells ............................................................................... 307
Worksheet................................................................ 307
Char ........................................................................ 43, 241
Characters ................................................................... 306
Chars ............................................................................. 240
Chart.............................................................................. 350
ChartAreas
Chart.......................................................................... 353
ChartImageFormat .................................................. 354
ChartType
Series.......................................................................... 353
CheckBox..................................................... 77, 431, 490
in Menü .................................................................... 316
Checked .................................................................... 77, 79
CheckedChanged.................................................. 77, 79
Child
WindowsFormsHost............................................ 505
Choose() .......................................................................... 75
Class ........................................................................ 26, 188
Clear()
generische Liste ..................................................... 401
Graphics ................................................................... 450
Series.......................................................................... 353
ClickOnce-Verteilung ............................................. 513
3703.book Seite 538 Donnerstag, 3. September 2015 2:52 14
Index
539
Clone() ................................................................. 149, 222
Close() .............................................................................. 28
Document ...................................................... 305, 308
Form ................................................................... 28, 141
OleDbConnection................................................. 384
StreamReader ........................................................ 267
Workbook................................................................ 308
XmlTextReader ..................................................... 290
XmlTextWriter ...................................................... 289
Code-Ansicht
Windows Forms ....................................................... 25
WPF............................................................................ 486
Code-Modul ...................................................... 142, 178
Codezeile
auskommentieren .................................................. 29
editieren...................................................................... 27
lang............................................................................... 26
Collection..................................................................... 225
Color....................................................... 38, 88, 344, 345
Pen ............................................................................. 450
SolidBrush ............................................................... 450
ColorDialog ................................................................. 344
ColumnIndex ............................................................. 359
Columns ....................................................................... 356
ListView.................................................................... 350
COM-Anwendung........................................... 303, 307
Combobox................................................................... 109
CommandText........................................................... 385
Common Controls ..................................................... 22
Connection.................................................................. 385
ConnectionString
OleDBConnection ....................................... 384, 439
Sammlung .............................................................. 417
vor 2007................................................................... 388
Connector/NET.......................................................... 415
Console ......................................................................... 179
Const................................................................................ 49
Container .............................................................. 59, 423
Contains()
generische Liste..................................................... 225
ContainsKey()............................................................. 234
ContainsValue()......................................................... 234
ContextMenuStrip ................................................... 320
Controls ........................................................................ 467
Add() .......................................................................... 207
Remove().................................................................. 207
Convert
ToDouble() ................................................................. 67
Convert (Forts.)
ToInt32() ......................................................... 180, 332
Cos() ............................................................................... 295
Count
Datenfeld................................................................. 172
generische Liste .................................................... 226
Items ......................................................................... 102
String ........................................................................ 245
COUNT() ....................................................................... 412
Create
Öffnungsmodus........................................... 266, 268
CreateGraphics() ....................................................... 445
CreateObject() .................................................. 303, 307
CSS .................................................................................. 420
CSV-Datei ..................................................................... 243
CurrentUICulture ..................................................... 362
D
Data Source ....................................................... 384, 416
DataBind().................................................................... 439
DataGrid ....................................................................... 439
DataGridView............................................................. 355
CellEventArgs ........................................................ 359
ColumnCollection ................................................ 356
Row ............................................................................ 358
RowCollection ....................................................... 357
TextBoxColumn ................................................... 356
DataSource .................................................................. 439
Date ................................................................................... 43
Datei............................................................................... 264
Änderungszeitpunkt ........................................... 280
Erzeugungszeitpunkt ......................................... 280
Information über ........................................ 270, 279
lesen ................................................................. 265, 273
löschen ..................................................................... 279
öffnen ....................................................................... 273
öffnen, Dialog........................................................ 339
schließen......................................................... 267, 273
schreiben ................................................................. 273
speichern, Dialog ................................................. 341
wahlfreier Zugriff ................................................. 272
Zugriffszeitpunkt ................................................. 280
Daten
speichern ................................................................. 264
Datenbank ......................................................... 365, 474
erstellen ................................................................... 378
3703.book Seite 539 Donnerstag, 3. September 2015 2:52 14
Index
540
Datenbank (Forts.)
im Internet .............................................................. 436
im Internet ändern............................................... 439
verknüpfte Abfrage .............................................. 410
Datenbankdatei ........................................................ 377
Datenbanksystem .................................................... 368
Datenfeld ..................................................................... 144
als Parameter ......................................................... 173
Dimensionsgröße ................................................. 158
durchsuchen ................................................. 146, 149
eindimensional...................................................... 144
Größe ......................................................................... 172
initialisieren............................................................ 154
Klasse ........................................................................ 148
kopieren.................................................................... 149
mehrdimensional ................................................. 150
sortieren ................................................................... 149
Datenkapselung............................................... 189, 214
Datenpunkt ................................................................ 353
Datenreihe .................................................................. 352
Datensatz..................................................................... 366
ändern ....................................................................... 395
Anzahl ....................................................................... 412
auswählen ............................................................... 390
einfügen ................................................................... 396
gruppieren ............................................................... 413
löschen ...................................................................... 395
sortieren ................................................................... 393
Summe ...................................................................... 413
Datentyp ......................................................................... 42
benutzerdefiniert .................................................. 158
generisch .................................................................. 225
DateTime ..................................................................... 256
DateTimePicker......................................................... 261
DateTimePickerFormat ......................................... 261
Datum ........................................................................... 256
berechnen ................................................................ 259
Bestandteil .............................................................. 257
prüfen ........................................................................ 278
Datum und Uhrzeit
eingeben ................................................................... 261
Day ................................................................................. 257
DayOfWeek ................................................................. 257
DayOfYear ................................................................... 257
Debug ............................................................................ 122
beenden ................................................... 67, 119, 423
Debuggen
Konsolenanwendung .......................................... 185
DecimalPlaces
Zahlenauswahlfeld ................................................ 68
default.aspx ................................................................ 424
Delegate ....................................................................... 205
DELETE................................................................. 384, 395
DESC .............................................................................. 393
Description ................................................................. 343
Design-Ansicht
WPF ............................................................................ 486
Detailtabelle ............................................................... 371
Dezimaltrennzeichen............................................. 403
Diagramm ................................................................... 350
DialogResult ...................................................... 334, 339
DialogResultOK......................................................... 341
Dictionary
generisch.................................................................. 232
Dictionary(Of)............................................................ 233
Dim ......................................................................... 44, 145
Directory...................................................................... 279
Division........................................................................... 52
DLL ................................................................................. 235
erstellen .................................................................... 235
nutzen ....................................................................... 237
Do ...................................................................................... 92
Document
MS Word................................................................... 303
Documents
Application ............................................................. 303
Doppelklick.................................................................... 26
Doppelpunkt ................................................................. 70
Double ............................................................................. 42
DrawEllipse() .............................................................. 449
DrawImage()............................................................... 453
DrawLine()................................................................... 447
DrawPolygon() .......................................................... 448
DrawRectangle() ....................................................... 448
DrawString() ............................................................... 453
DropDown .................................................................. 110
DropDownList ........................................................... 110
DropDownStyle ........................................................ 110
Dynamic Link Library............................................. 235
E
E (Konstante).............................................................. 295
Eigenschaft
ändern.................................................................. 20, 34
3703.book Seite 540 Donnerstag, 3. September 2015 2:52 14
Index
541
Eigenschaft (Forts.)
Klasse ........................................................................ 188
statisch ..................................................................... 208
Eigenschaften-Fenster ....................................... 20, 23
Eigenschaftsmethode ............................................. 193
Ein- und Ausgabe
nur Text.................................................................... 179
Eingabe
Zahl ............................................................................ 180
Zeichenkette .............................................................. 64
Eingabeaufforderung .............................................. 184
Eingabe-Dialogfeld ................................................... 329
Eingabeformular ....................................................... 428
Einzelschrittverfahren............................................ 123
ElementHost............................................................... 507
ElementPosition ....................................................... 353
Ellipse ............................................................................ 449
Else
Block............................................................................. 72
einzeilig ....................................................................... 70
Enabled
Steuerelement ....................................................... 128
Timer ......................................................................... 473
Zeitgeber..................................................................... 61
End Class ...................................................................... 188
End If................................................................................ 72
End Interface .............................................................. 222
End Select....................................................................... 73
End Structure ............................................................. 160
endofdoc
Textmarke............................................................... 304
Enter............................................................................... 125
Entwicklung
eines Programms ................................................. 113
Enum ............................................................................... 51
Enumeration ................................................................ 50
Environment .............................................................. 344
Equals() ............................................................... 202, 229
Ereignis .................................................................... 21, 25
mehrere ....................................................................... 82
Ereigniskette............................................................... 133
endlos ....................................................................... 135
Ereignisliste ................................................................ 127
Ereignismethode
Verweis auf ............................................................. 205
Ereignisprozedur ........................................................ 25
erzeugen .................................................................. 488
Eulersche Zahl ............................................................ 295
Event Routing ............................................................ 488
Event Trigger .............................................................. 502
Excel.Range ................................................................. 309
Exception
Klasse........................................................................ 120
Exception Handling................................................. 117
ExecuteNonQuery() ....................................... 385, 389
ExecuteReader() ........................................................ 385
exe-Datei ............................................................... 30, 184
Exists()
Directory ................................................................. 280
File.............................................................................. 270
Exit Do ............................................................................. 92
Exit For............................................................................. 90
Exit Function.............................................................. 167
Exit Sub......................................................................... 162
Exp() ............................................................................... 295
eXtensible Application Markup Language ..... 485
F
Farbe
wählen, Dialog ...................................................... 344
Fehler............................................................................. 114
logischer .................................................................. 122
Fehlerkorrektur ......................................................... 115
Feld
Datenbanktabelle ................................................ 366
Feldname
Datenbanktabelle ................................................ 366
File ........................................................................ 270, 279
FileClose()..................................................................... 273
FileGetObject() ........................................................... 273
FileMode ...................................................................... 266
FileNames .................................................................... 339
FileOpen() .................................................................... 273
FilePutObject() ........................................................... 273
FileStream.................................................................... 265
FileSystemEntries() .................................................. 280
FillEllipse() ................................................................... 449
FillPolygon()................................................................ 448
FillRectangle() ............................................................ 448
Filter............................................................................... 339
FirstDayOfWeek ........................................................... 51
Fixed Single.................................................................... 24
Floor() ............................................................................ 295
FolderBrowserDialog .............................................. 343
3703.book Seite 541 Donnerstag, 3. September 2015 2:52 14
Index
542
Font ............................................................. 255, 316, 345
Font.Style..................................................................... 319
FontDialog .................................................................. 345
FontFamily.................................................................. 319
FontStyle.Bold ........................................................... 319
FontStyle.Italic........................................................... 319
For...................................................................................... 89
For Each ........................................................................ 103
Form ................................................................................. 19
form (HTML)............................................................... 431
Form_Activated ........................................................ 127
Form_Load..................................................................... 93
Format
DateTimePicker ..................................................... 261
Format() ....................................................................... 254
Formatvorlage ........................................................... 420
Formular ......................................................................... 19
aktivieren ................................................................. 127
anzeigen ................................................................... 141
Datenbank............................................................... 377
hinzufügen .............................................................. 138
löschen ...................................................................... 512
mehrere .................................................................... 138
verstecken................................................................ 141
Formularansicht .......................................................... 25
Formularbasierte Ressourcen ............................. 360
Formularvorlage....................................................... 512
Fortschrittsbalken.................................................... 328
Frames .......................................................................... 492
FromArgb().............................................................. 38, 88
FromFile() .................................................................... 453
Bitmap ...................................................................... 350
FullRowSelect
ListView .................................................................... 349
Funktion ...................................................................... 167
mathematische ..................................................... 295
zeichnen ................................................................... 457
G
Ganzzahldivision......................................................... 52
GDI+ ............................................................................... 445
Generische Liste..................................... 225, 228, 466
füllen.......................................................................... 401
leeren ......................................................................... 401
Generische Schnittstelle........................................ 229
Generischer Datentyp ............................................ 225
Generisches Dictionary ......................................... 232
Get-Accessor .............................................................. 194
GetCreationTime() ................................................... 280
GetCurrentDirectory()............................................ 280
GetFiles() ...................................................................... 280
GetLastAccessTime() ............................................... 280
GetLastWriteTime() ................................................. 280
GetType() ..................................................................... 204
GetUpperBound()..................................................... 158
Gleich
SQL ............................................................................. 391
VB.................................................................................. 54
Gleichheitszeichen .............................................. 27, 57
Grafik ............................................................................ 495
Graphics ....................................................................... 445
Grid ................................................................................ 494
Größer als
SQL ............................................................................. 391
VB.................................................................................. 54
GROUP BY ................................................................... 413
Groupbox ....................................................................... 83
Gültigkeitsbereich ............................................ 45, 164
H
Häkchen .......................................................................... 77
Haltepunkt.................................................................. 122
entfernen ................................................................. 123
Handles ........................................................................... 82
Hauptmenü ....................................................... 311, 474
head ............................................................................... 423
Headertext .................................................................. 357
Height .............................................................................. 34
Hide()............................................................................. 141
Hilfslinien ...................................................................... 32
Hilfstabelle
Datenbank .............................................................. 369
Hoch .............................................................................. 295
Hochkomma ................................................................. 29
Hour .............................................................................. 257
HTML............................................................................. 420
html ............................................................................... 423
HTML-Markierung ................................................... 423
Hyperlink .................................................................... 495
3703.book Seite 542 Donnerstag, 3. September 2015 2:52 14
Index
543
I
ICloneable .................................................................... 222
id...................................................................................... 425
IEquatable .................................................................... 229
If
Block............................................................................. 72
einzeilig ....................................................................... 70
IIf()..................................................................................... 74
Image
auf Button............................................................... 323
für ImageList.......................................................... 350
für Zeichnung ........................................................ 453
ImageList...................................................................... 350
Implementation........................................................ 221
Implements................................................................. 223
Imports ......................................................................... 199
Increment
Zahlenauswahlfeld ................................................. 68
Index
Datenbank ..................................................... 365, 369
Datenfeld................................................................. 145
eindeutig ................................................................. 369
index.htm .................................................................... 422
IndexOf()
Datenfeld................................................................. 149
generische Liste..................................................... 225
String ........................................................................ 245
IndexOfAny()
String ........................................................................ 245
IndexOutOfRangeException................................ 146
Inherits ......................................................................... 213
Initial Catalog ............................................................. 416
InitialDirectory .......................................................... 339
Initialisierung............................................................... 93
Inkonsistenz ............................................................... 366
input .............................................................................. 431
InputBox() ................................................................... 329
INSERT ................................................................. 384, 396
Insert() ........................................................................... 248
generische Liste..................................................... 225
ListBox...................................................................... 105
InsertParagraphAfter()
Range ........................................................................ 303
InsideLineStyle
Borders ..................................................................... 304
Installationsprogramm.......................................... 513
Instanz .......................................................................... 192
Instanziierung ........................................................... 191
Integer.............................................................................. 42
Integrität
referentielle ............................................................ 382
IntelliSense.................................................................. 115
Interface ............................................................. 221, 222
Internetanwendung ................................................ 419
Daten senden......................................................... 428
dynamisch .............................................................. 420
erstellen ................................................................... 422
Internetseite
formatieren ............................................................ 427
Interval
Timer.................................................................. 61, 329
InvalidCastException.............................................. 118
Klasse........................................................................ 121
Is ............................................................ 73, 152, 201, 326
Is Nothing .................................................................... 204
IsDate().......................................................................... 278
IsLoaded ....................................................................... 491
IsNumeric() ................................................................. 278
IsPostBack.................................................................... 430
Item
Bookmarks ............................................................. 304
Items .............................................................................. 100
ListView ................................................................... 350
J
Jahr ................................................................................. 257
JavaScript ..................................................................... 420
K
Kalender ....................................................................... 434
Kamera
3D-Körper................................................................ 500
key .................................................................................. 232
Keys................................................................................ 234
Kill() ................................................................................ 279
Klammer ......................................................................... 58
Klasse................................................................................ 26
abgeleitet ................................................................ 212
Definition ................................................................ 188
einbinden ................................................................ 199
ermitteln......................................................... 204, 205
3703.book Seite 543 Donnerstag, 3. September 2015 2:52 14
Index
544
Klasse (Forts.)
statisches Element ............................................... 208
Klassenbibliothek
eigene ........................................................................ 235
Klassenhierarchie..................................................... 211
Kleiner als
SQL.............................................................................. 391
VB.................................................................................. 54
Kombinationsfeld .................................................... 109
in Menü .................................................................... 313
Kommandozeile ....................................................... 184
Parameter................................................................ 183
Kommentarzeile.......................................................... 29
Konfigurationsdaten .............................................. 515
Konsolenanwendung ............................................. 178
Konstante ....................................................................... 48
integriert .................................................................... 49
Konstruktor ....................................................... 195, 215
parameterlos .......................................................... 198
Kontextmenü ............................................................ 320
Kontrollkästchen......................................................... 77
in Menü .................................................................... 313
Kontrollstruktur .......................................................... 69
Koordinatensystem
3D-Körper ................................................................ 498
Kosinus......................................................................... 295
Kreiszahl ...................................................................... 295
L
Label ....................................................................... 21, 490
LabelStyle
Axis............................................................................. 354
Language...................................................................... 360
LargeChange
Schieberegler ............................................................ 89
LargeImageList
ListView .................................................................... 349
LastIndexOf()
String ......................................................................... 245
Laufzeitfehler............................................................. 117
Layout ........................................................................... 486
Legends
Chart .......................................................................... 353
Length
MS Word-Text ........................................................ 306
Zeichenkette ........................................................... 240
Licht
3D-Körper ................................................................ 500
LIKE (SQL) .................................................................... 392
Like (VB) .......................................................................... 54
LineSegment .............................................................. 497
Linie ............................................................................... 447
List(Of ...) ...................................................................... 227
ListBox................................................................. 100, 490
ListBoxItem ................................................................ 492
Liste
generisch........................................................ 225, 228
Listenansicht
mit Bild ..................................................................... 347
Listenfeld ..................................................................... 100
ListView........................................................................ 347
ListViewItem .............................................................. 349
localhost ...................................................................... 423
Localizable .................................................................. 360
Location ................................................................... 34, 59
Log() ............................................................................... 295
Log10() .......................................................................... 295
Logarithmus............................................................... 295
Lokal ................................................................................. 45
Lokalisierung ............................................................. 360
Long .................................................................................. 42
Loop .................................................................................. 92
M
m:n-Relation .............................................................. 371
Main()............................................................................ 178
MainWindow.xaml.................................................. 486
MainWindow.xaml.vb............................................ 488
Markierungssprache ............................................... 420
Mastertabelle ............................................................. 371
Material
3D-Körper ................................................................ 500
Math .............................................................................. 295
Math.Floor()................................................................... 96
MaxDate
DateTimePicker..................................................... 263
Maximum
Datenfeld ................................................................. 146
Fortschrittsbalken ................................................ 329
Schieberegler ............................................................ 88
Zahlenauswahlfeld ................................................ 68
MaxLength..................................................................... 65
3703.book Seite 544 Donnerstag, 3. September 2015 2:52 14
Index
545
MaxSize ........................................................................ 346
mdb-Datei.................................................................... 379
Me ............................................................................ 28, 190
Mehrfachauswahl ....................................... 33, 73, 108
Mehrfachvererbung ................................................ 221
Mehrsprachigkeit ..................................................... 360
Menü.............................................................................. 311
MenuStrip.................................................................... 311
MeshGeometry3D .................................................... 500
Message ........................................................................ 120
MessageBox ................................................................ 333
MessageBoxButtons................................................ 334
MessageBoxIcon ....................................................... 334
Methode ....................................................................... 162
Klasse ........................................................................ 188
statisch ..................................................................... 208
überladen ................................................................ 196
Microsoft Access Database Engine .................... 383
Microsoft Excel 15.0 Object Library ................... 301
Microsoft Word 15.0 Object Library................... 301
Microsoft.ACE.OLEDB.12.0 .................................... 384
Microsoft.Office.Interop.Excel ............................ 302
Microsoft.Office.Interop.Word............................ 302
Millisecond.................................................................. 257
Millisekunde ............................................................... 257
MinDate
DateTimePicker .................................................... 263
Minimum
Datenfeld................................................................. 146
Fortschrittsbalken ............................................... 329
Schieberegler............................................................. 88
Zahlenauswahlfeld ................................................. 68
MinSize ......................................................................... 346
Minute........................................................................... 257
Mod .................................................................................. 52
modal ............................................................................ 141
Modul
allgemein ................................................................ 142
Modularisierung ................................................ 87, 162
Module1.vb .................................................................. 178
Modulo ........................................................................... 52
Monat ............................................................................ 257
Month............................................................................ 257
MoveToNextAttribute()
XmlTextReader ..................................................... 290
MS Access..................................................................... 376
vor 2007................................................................... 388
MS Excel
Arbeitsmappe drucken ...................................... 308
Arbeitsmappe erstellen...................................... 306
Arbeitsmappe lesen ............................................ 308
MS Word
Dokument drucken ............................................. 305
Dokument erstellen ............................................ 302
Dokument lesen ................................................... 305
MultiExtended........................................................... 108
MultiLine ........................................................................ 64
Multiplikation............................................................... 52
MultiSelect .................................................................. 339
Mustervergleich ........................................................... 54
My.MySettings()........................................................ 516
MyBase......................................................... 93, 213, 216
MyBase.New()............................................................. 216
MySQL ........................................................................... 415
MySQL.Data ................................................................ 416
MySql.Data.MySqlClient........................................ 416
MySqlClient ................................................................ 416
MySqlCommand....................................................... 416
MySqlConnection..................................................... 416
MySqlDataReader ..................................................... 416
N
Nachkommastellen
Datentyp .................................................................... 45
Zahlenauswahlfeld................................................. 68
Name ................................................................................ 23
Namenskonvention ............................................ 22, 37
Namensraum ............................................................. 198
einbinden ................................................................ 199
namespace .................................................................. 198
NavigationWindow.................................................. 493
NET-Treiber ................................................................. 415
New ......................................................................... 36, 191
Konstruktor............................................................ 195
Next................................................................................... 90
Nicht-Operator ............................................................. 55
Nicht-proportionale Schriftart............................ 254
NodeType
XmlTextReader ..................................................... 290
NOT (SQL)..................................................................... 392
Not (VB) ........................................................................... 55
Nothing .............................................................. 204, 309
3703.book Seite 545 Donnerstag, 3. September 2015 2:52 14
Index
546
Now ................................................................................ 256
NumericUpDown .............................................. 68, 249
O
Object ................................................................... 202, 218
Objekt
erzeugen ................................................................... 195
identisch ................................................................... 203
Schreibweise ............................................................. 96
temporäres .............................................................. 231
Objektorientierung ................................................. 187
Objektverweis ............................................................ 191
dasselbe Objekt...................................................... 201
vergleichen .............................................................. 390
Oder-Operator .............................................................. 55
Of ........................................................................... 227, 233
Öffnungsmodus........................................................ 266
OleDb ............................................................................ 385
OleDbCommand....................................................... 385
OleDbConnection .................................................... 384
OleDbReader .............................................................. 385
OnSelectionChanged .............................................. 436
Open
Öffnungsmodus .................................................... 266
Open() .................................................................. 305, 309
OleDbConnection ................................................. 384
OpenFileDialog.......................................................... 339
Operator.......................................................................... 51
für Berechnungen ................................................... 52
logisch ............................................................... 55, 392
Priorität ...................................................................... 57
Rangfolge................................................................... 57
Vergleich .......................................................... 54, 201
Zuweisung ................................................................. 57
option ........................................................................... 434
Optional ....................................................................... 169
Optionsschaltfläche ................................................... 79
mehrere Gruppen ................................................... 83
OR (SQL) ....................................................................... 392
Or (VB).............................................................................. 55
Bit-Operator............................................................ 319
ORDER BY .................................................................... 393
OutsideLineStyle
Borders...................................................................... 304
OverflowException......................................... 118, 121
Overloads .................................................................... 213
Overridable ................................................................. 218
Overrides ............................................................ 218, 219
P
Page ...................................................................... 425, 493
Page_Load ................................................................... 425
Page-Direktive ........................................................... 425
Paint-Ereignis ............................................................ 455
PaintEventArgs ......................................................... 456
Panel....................................................................... 59, 461
Paragraphs .................................................................. 305
Document................................................................ 303
ParamArray ................................................................ 171
Parameter.................................................................... 163
beliebig viele ........................................................... 171
optional .................................................................... 169
PasswordChar ............................................................... 65
Passwortabfrage .......................................................... 65
Path................................................................................ 497
PathFigure................................................................... 495
PathGeometry ........................................................... 495
Peek()............................................................................. 267
Pen ................................................................................. 445
Pfadangabe
relativ ........................................................................ 271
Pfadgeometrie ........................................................... 495
PI ..................................................................................... 295
Pinsel............................................................................. 445
Farbe .......................................................................... 450
Pixel .................................................................................. 34
Platzhalter ................................................................... 392
Point .............................................................. 36, 449, 458
Points
Series.......................................................................... 353
Polygon ........................................................................ 448
Polymorphie .............................................................. 217
Position
Legends..................................................................... 353
Potenzierung ................................................................ 52
Pow().............................................................................. 295
PresentationCore ..................................................... 507
PresentationFramework ....................................... 507
Preserve ....................................................................... 155
Primärindex ............................................................... 369
Primärschlüssel erstellen ..................................... 380
3703.book Seite 546 Donnerstag, 3. September 2015 2:52 14
Index
547
Print()
Printing .................................................................... 354
Printing
Chart ......................................................................... 354
PrintingManager
Chart ......................................................................... 354
PrintOut()
Document ............................................................... 305
PrintOutEx()
Workbook................................................................ 308
PrintPreview()
Printing .................................................................... 354
Private ................................................. 46, 169, 189, 190
Programm
beenden....................................................................... 30
starten ......................................................................... 29
testen ........................................................................... 30
Programmentwicklung .......................................... 113
Programmierung
clientseitig .............................................................. 420
ereignisgesteuert.................................................. 133
serverseitig ............................................................. 420
ProgressBar ................................................................. 328
Projekt
neu erzeugen ............................................................ 19
neu erzeugen (WPF) ............................................ 485
öffnen .......................................................................... 30
schließen..................................................................... 30
speichern .................................................................... 25
Verweis hinzufügen ............................................ 415
Projektmappen-Explorer......................................... 20
Alles anzeigen........................................................ 301
Projektressourcen .................................................... 360
Projektvorlage............................................................ 513
Properties Window .................................................... 20
Property........................................................................ 193
Protected ...................................................................... 215
Provider ........................................................................ 384
Prozedur ................................................................ 26, 162
allgemein ................................................................... 86
verlassen.................................................................. 162
Public ......................................... 46, 140, 189, 190, 214
Q
Queue ............................................................................ 225
Quit()
Application .................................................... 305, 308
R
RadioButton ........................................................ 79, 431
Random Access ......................................................... 272
Randomize() .................................................................. 93
Range
Document ...................................................... 303, 305
Rangfolge ........................................................................ 53
Read()............................................................................. 387
XmlTextReader ..................................................... 290
Reader ........................................................................... 385
ReadLine()
Console .................................................................... 179
StreamReader........................................................ 267
Rechenoperator............................................................ 52
Rechteck ....................................................................... 448
Rectangle...................................................................... 448
ReDim ........................................................................... 155
Redundanz .................................................................. 366
Referenztyp................................................................. 200
Registrierung.............................................................. 511
Rekursion..................................................................... 175
Relation ........................................................................ 368
erstellen ................................................................... 381
Relational..................................................................... 365
Remove()
Controls ................................................................... 471
Dictionary ............................................................... 234
generische Liste .................................................... 226
String ........................................................................ 250
RemoveAt()
generische Liste ........................................... 225, 481
ListBox...................................................................... 105
Replace()
String ............................................................... 253, 403
Resources.resx ........................................................... 362
Ressourcen .................................................................. 360
resx-Datei .................................................................... 361
Return ................................................................. 167, 169
Ringtausch .................................................................. 166
Rnd() ................................................................................. 92
3703.book Seite 547 Donnerstag, 3. September 2015 2:52 14
Index
548
RootFolder................................................................... 343
Rotationstransformation...................................... 502
Round()......................................................................... 295
RowIndex .................................................................... 359
Rows .............................................................................. 357
Rückgabewert ................................................... 167, 169
runat .............................................................................. 425
Runden ......................................................................... 295
S
SaveAs()
Document ................................................................ 305
Workbook ................................................................ 308
SaveFileDialog ........................................................... 341
SaveImage()
Chart .......................................................................... 354
Schalter............................................................................ 77
Schieberegler................................................................. 87
Schleife ............................................................................ 89
For Each .................................................................... 103
geschachtelt............................................................ 151
Schlüssel-Wert-Paar ................................................ 232
Schnittstelle................................................................ 221
generisch .................................................................. 229
Schrift............................................................................ 316
auswählen, Dialog ............................................... 345
Schriftart ...................................................................... 316
nicht-proportional ............................................... 254
Schriftgröße................................................................ 318
Schriftstil ..................................................................... 319
Schrittweite
Schleife ........................................................................ 89
Zahlenauswahlfeld ................................................ 68
script.............................................................................. 425
Scrollbalken ................................................................ 100
ScrollBars
Textfeld ............................................................. 64, 322
Second .......................................................................... 257
Seiten
in Frames ................................................................. 492
Sekundärindex .......................................................... 369
Sekunde........................................................................ 257
SELECT ................................................................. 384, 390
select (HTML) ............................................................. 434
Select Case ...................................................................... 73
SelectAll() ..................................................................... 137
Selected
DataGridView ........................................................ 357
SelectedDate............................................................... 436
SelectedIndex
ComboBox............................................................... 318
ListBox ...................................................................... 102
SelectedIndexChanged .......................................... 104
SelectedIndices ......................................................... 108
SelectedItem .............................................................. 102
SelectedItems ............................................................ 108
SelectedPath............................................................... 343
SelectionMode ................................................. 108, 110
Semikolon ................................................................... 243
sender ........................................................................... 326
Separator ..................................................................... 313
Series
Chart.......................................................................... 352
SeriesChartType........................................................ 353
Serversteuerelement ..................................... 427, 434
Set-Accessor ............................................................... 194
SetCurrentDirectory() ............................................ 280
Shared ........................................................................... 209
Short ................................................................................. 42
Show(), MessageBox................................................ 333
ShowColor................................................................... 346
ShowDialog()
Standarddialogfeld.............................................. 339
Unterformular ....................................................... 141
ShowNewFolderButton ......................................... 343
Simple ........................................................................... 110
Sin() ................................................................................ 295
Single................................................................................ 42
Sinus .............................................................................. 295
Size
Eigenschaft ............................................................... 34
Schrift ........................................................................ 317
Struktur ...................................................................... 36
Slider ............................................................................. 490
SmallChange
Schieberegler ............................................................ 89
SmallImageList
ListView .................................................................... 349
SolidBrush................................................................... 447
Solution Explorer ........................................................ 20
Sort() .............................................................................. 149
SpecialFolder.............................................................. 344
Spin-Button ................................................................ 263
3703.book Seite 548 Donnerstag, 3. September 2015 2:52 14
Index
549
Split()
String ........................................................................ 243
SQL.................................................................................. 384
Großschrift.............................................................. 385
typische Fehler ...................................................... 396
Sqrt() .............................................................................. 295
Stack ............................................................................... 225
StackOverFlowException ...................................... 135
StackPanel ................................................................... 487
Startformular ............................................................. 512
Startparameter .......................................................... 183
Startzustand ................................................................. 23
Statische Variable ....................................................... 46
Statusleiste .................................................................. 327
StatusStrip ................................................................... 327
Step................................................................................... 89
Steuerelement
Abstand einstellen .................................................. 33
aktivieren ......................................................... 61, 128
ausrichten .................................................................. 33
auswählen.................................................................. 22
einfügen ...................................................................... 21
Größe ........................................................................... 34
Hintergrundfarbe ................................................... 38
Kontextmenü ........................................................ 320
kopieren ...................................................................... 34
Liste ........................................................................... 467
markieren................................................................... 32
mit Taste bedienen .............................................. 132
Position ................................................................ 34, 59
sichtbar .................................................................... 128
zur Laufzeit erzeugen ................................ 206, 461
zur Laufzeit löschen ................................... 461, 471
Stift ................................................................................. 445
Dicke.......................................................................... 450
Farbe ......................................................................... 450
Storyboard................................................................... 502
StreamReader............................................................. 265
StreamWriter.............................................................. 267
String ...................................................................... 43, 239
feste Länge .............................................................. 272
Structure ...................................................................... 160
Structured Query Language ................................. 384
Struktur ........................................................................ 158
Definition ................................................................ 160
Stunde ........................................................................... 257
Style...................................................................... 317, 319
Sub .................................................................................... 26
SubItems
ListViewItem .......................................................... 350
submit ........................................................................... 431
Substring() ................................................................... 251
Subtract() ..................................................................... 259
Subtraktion .................................................................... 52
SUM() ............................................................................. 413
Symbolleiste ............................................................... 322
Syntaxfehler ........................................................ 27, 115
System.Data.OleDb ........................................ 385, 438
System.Globalization.............................................. 362
System.IO........................................................... 265, 266
System.Resources..................................................... 364
System.Text ................................................................ 289
System.Threading .................................................... 362
System.Windows.Forms ........................................ 505
System.Windows.Forms.DataVisualization.Char-
ting ............................................................................ 352
System.Xaml............................................................... 507
System.Xml ................................................................. 289
Systemton ................................................ 334, 337, 338
T
Tabelle
darstellen ................................................................ 355
Datenbank .............................................................. 377
Tabellenausgabe ....................................................... 254
Tabellenentwurf........................................................ 379
TabIndex ...................................................................... 131
Tables
Document ............................................................... 304
TabStop......................................................................... 131
Tag der Woche ........................................................... 257
Tag des Jahres............................................................. 257
Tag des Monats.......................................................... 257
Tan() ............................................................................... 295
Tangens ........................................................................ 295
Tastaturbedienung .................................................. 131
Taste
Alt............................................................................... 132
F11 ............................................................................... 123
F5 ................................................................................... 29
F9 ................................................................................ 122
Tasten-Key................................................................... 501
Tastenkombination
Strg+C ....................................................................... 182
3703.book Seite 549 Donnerstag, 3. September 2015 2:52 14
Index
550
Tastenkombination (Forts.)
Strg+F5 ...................................................................... 179
Teilzeichenkette........................................................ 251
Template ............................................................. 512, 513
Temporäres Objekt .................................................. 231
Tetris.............................................................................. 461
Text
Document ................................................................ 305
in Zeichnung ........................................................... 452
mehrzeilig .................................................................. 64
Range......................................................................... 303
Steuerelement .......................................................... 23
Textfeld ............................................................. 64, 241
TextBox ........................................................................ 490
in Menü .................................................................... 313
TextChanged ........................................... 129, 249, 318
Textfeld ........................................................................... 64
alles auswählen ..................................................... 137
ändern ....................................................................... 129
kopieren...................................................................... 65
koppeln ..................................................................... 136
Then........................................................................... 70, 72
TickFrequency
Schieberegler ............................................................ 89
TimeOfDay.................................................................. 257
Timer ............................................................. 61, 329, 461
TimeSpan..................................................................... 259
title (HTML)................................................................. 423
Title (VB)....................................................................... 339
TitleAlignment
Axis............................................................................. 353
To ................................................................................ 73, 89
Today............................................................................. 256
TodayDayStyle .......................................................... 436
ToDouble() ..................................................................... 67
ToInt32() .............................................................. 180, 332
Toolbox ........................................................................... 19
ToolStrip ...................................................................... 323
ToShortDateString() ................................................ 436
ToString() ............................................................ 218, 259
Trennzeichen ............................................................. 243
Trim() ............................................................................ 242
TrimEnd() .................................................................... 242
TrimStart()................................................................... 242
Truncate() .................................................................... 295
Try .................................................................................. 120
Typ
ermitteln ........................................................ 204, 205
Type Converter ......................................................... 487
TypeOf Is............................................................. 205, 309
U
Übergabe
per Referenz ............................................................ 165
per Wert.................................................................... 164
Überladen.................................................................... 196
Überschreiben ........................................................... 218
Überwachungsfenster ............................................ 123
Uhrzeit................................................................. 256, 257
berechnen ................................................................ 259
UID ................................................................................. 416
Umwandlung
in ganze Zahl .......................................................... 332
in Zahl ......................................................................... 67
Und-Operator ............................................................... 55
Ungleich
SQL ............................................................................. 391
VB.................................................................................. 54
Unterformular........................................................... 138
Untermenü ................................................................. 311
Unterstrich .......................................................... 32, 392
Until.................................................................................. 92
UPDATE ..................................................... 384, 389, 395
Up-Down-Button...................................................... 263
V
Value
DateTimePicker..................................................... 263
Fortschrittsbalken ................................................ 329
HTML-Textfeld....................................................... 431
MS Excel-Zelle ........................................................ 358
Schieberegler ............................................................ 88
Zahlenauswahlfeld ................................................ 68
value .............................................................................. 232
ValueChanged
DateTimePicker..................................................... 264
Schieberegler ............................................................ 88
Zahlenauswahlfeld ................................................ 68
VALUES......................................................................... 396
Values ........................................................................... 234
Variable ........................................................................... 41
ausblenden................................................................ 46
3703.book Seite 550 Donnerstag, 3. September 2015 2:52 14
Index
551
Variable (Forts.)
Gültigkeitsbereich................................................... 41
klassenweit gültig ................................................... 46
Kontrolle.................................................................. 123
Name............................................................................ 41
öffentlich .......................................................... 46, 139
Startwert..................................................................... 47
statisch ........................................................................ 46
vbCrLf .............................................................................. 37
Verbindung
Datenbank .............................................................. 384
Vererbung.................................................................... 211
Vergleichsoperator .................................................. 391
Verknüpfung
Datenbank .............................................................. 368
erstellen (Datenbank) ......................................... 381
Verweis
auf Ereignismethode .......................................... 205
auf nichts ....................................................... 204, 309
hinzufügen ............................................................. 301
Verzeichnis
Datei- und Verzeichnisliste .............................. 280
Dateiliste ................................................................. 280
ermitteln .................................................................. 280
Existenz .................................................................... 280
Information über ................................................. 279
setzen ........................................................................ 280
wählen, Dialog ...................................................... 343
wechseln .................................................................. 285
Verzweigung ................................................................. 69
äußere.......................................................................... 71
innere ........................................................................... 71
Vieleck ........................................................................... 448
Vielgestaltigkeit ........................................................ 217
View
ListView.................................................................... 347
Visible............................................................................ 128
Application .................................................... 303, 307
Visual Studio Community 2015 ............................ 17
Vokabel-Lernprogramm ........................................ 474
Vorlage
WPF-Anwendung ................................................. 485
W
Wahrheitswert ............................................................. 78
WdLineStyle ................................................................ 304
WdWindowState ....................................................... 303
Webserver.................................................................... 421
lokaler....................................................................... 421
WeekendDayStyle .................................................... 436
Werkzeugkasten........................................................... 19
Wertebereich ................................................................. 45
Werttyp......................................................................... 200
WHERE .......................................................................... 391
While................................................................................. 92
Width ...................................................................... 34, 450
Window ........................................................................ 487
Windows 10.......................................................... 17, 185
Windows 7 ............................................................ 17, 184
Windows 8 ............................................................ 17, 185
Windows Forms in WPF ......................................... 505
Windows Presentation Foundation.................. 485
WindowsBase ............................................................. 507
WindowsFormsHost ............................................... 505
WindowsFormsIntegration ........................ 505, 507
WindowState
Application .................................................... 303, 307
With......................................................................... 96, 161
Wochentag .................................................................. 257
Words ............................................................................ 306
Workbook
MS Excel................................................................... 307
Worksheets
Application ............................................................. 307
Wörterbuch................................................................. 232
WPF ................................................................................ 485
WPF in Windows Forms ......................................... 507
WPF-Buch..................................................................... 486
WrapPanel ................................................................... 490
Write() ........................................................................... 268
Console .................................................................... 179
WriteAttributeString()
XmlTextWriter ...................................................... 289
WriteEndElement()
XmlTextWriter ...................................................... 289
WriteLine()......................................................... 182, 268
Console .................................................................... 179
WriteStartDocument()
XmlTextWriter ...................................................... 289
WriteStartElement()
XmlTextWriter ...................................................... 289
Wurzel ........................................................................... 295
3703.book Seite 551 Donnerstag, 3. September 2015 2:52 14
Index
552
X
X (Location).................................................................... 34
x:Class ........................................................................... 487
x:Name ......................................................................... 488
XAML............................................................................. 485
mit Programmiercode ........................................ 486
XlWindowState ......................................................... 307
XML-Datei .......................................................... 286, 515
XML-Knoten ............................................................... 287
XmlNodeType............................................................ 290
xmlns ............................................................................ 487
XmlTextReader ......................................................... 290
XmlTextWriter .......................................................... 289
Xor ..................................................................................... 55
Bit-Operator............................................................ 319
Y
Y (Location) .................................................................... 34
Year ................................................................................ 257
Z
Zahl prüfen ................................................................. 278
Zahlenauswahlfeld............................................ 68, 249
Zeichen
einzelnes .................................................................. 240
prüfen........................................................................ 267
Zeichenkette............................................................... 239
durchsuchen ........................................................... 245
einfügen ................................................................... 248
ersetzen .................................................................... 253
Länge ......................................................................... 240
löschen...................................................................... 250
Teilzeichenkette .................................................... 251
trimmen ................................................................... 242
umwandeln............................................................... 66
verketten .................................................................... 56
zerlegen .................................................................... 243
Zeichnen ...................................................................... 445
dauerhaft ................................................................. 455
Zeichnung löschen .................................................. 450
Zeile lesen.................................................................... 267
Zeilenumbruch ............................................................ 26
Regeln.......................................................................... 31
Zeit ................................................................................. 256
Zeitgeber ......................................................................... 61
Zeitintervall ................................................................ 259
Zufallsgenerator ............................. 92, 145, 461, 474
Zuweisung...................................................................... 27
Zweidimensionale Grafik...................................... 495
3703.book Seite 552 Donnerstag, 3. September 2015 2:52 14
Thomas Theis
Einstieg in Visual Basic 2015 – Ideal für Programmiereinsteiger geeignet552 Seiten, broschiert, 5. Auflage 2015 29,90 Euro, ISBN 978-3-8362-3703-1
www.rheinwerk-verlag.de/3813
Wir hoffen sehr, dass Ihnen diese Leseprobe gefallen hat. Sie dürfen sie gerne empfehlen und weitergeben, allerdings nur vollständig mit allen Seiten. Bitte beachten Sie, dass der Funktionsumfang dieser Leseprobe sowie ihre Darstel-lung von der E-Book-Fassung des vorgestellten Buches abweichen können. Diese Leseprobe ist in all ihren Teilen urheberrechtlich geschützt. Alle Nut-zungs- und Verwertungsrechte liegen beim Autor und beim Verlag.
Teilen Sie Ihre Leseerfahrung mit uns!
Thomas Theis ist Dipl.-Ing. für Technische Informatik, verfügt über langjährige Erfahrung als EDV-Dozent, unter anderem an der Fachhochschule Aachen. Er leitet Schulungen zu C/C++, Visual Basic und Webprogram-mierung.
Know-how für Kreative.Wissen, wie’s geht.