Einstieg in Visual Basic 2015 – Ideal für

Werbung
Know-how
Wissen,
wie’s
fürgeht.
Kreative.
Leseprobe
Jeder 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.
»Einführung«
»Grundlagen«
»Lösungen«
Inhaltsverzeichnis
Index
Der Autor
Leseprobe weiterempfehlen
Thomas Theis
Einstieg in Visual Basic 2015 –
Ideal für Programmiereinsteiger geeignet
552 Seiten, broschiert, 5. Auflage 2015
29,90 Euro, ISBN 978-3-8362-3703-1
www.rheinwerk-verlag.de/3813
Kapitel 1
Einführung
1
In diesem Kapitel erlernen Sie anhand eines ersten Projekts den Umgang
mit der Entwicklungsumgebung und den Steuerelementen. Sie sind anschließ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 Entwicklungsumgebung Visual Studio 2015 können Sie u. a. in Visual Basic programmieren.
1.1 Aufbau dieses Buchs
Dieses Buch vermittelt Ihnen zunächst einen einfachen Einstieg in die
Programmierung mit Visual Basic und dem Visual Studio 2015. Die Bearbeitung 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.
Beispiele
Von Anfang an wird mit anschaulichen Windows-Anwendungen gearbeitet. Die Grundlagen der Programmiersprache und die Standardelemente
einer Windows-Anwendung, wie Sie sie schon von anderen Windows-Programmen kennen, werden gemeinsam vermittelt. Die Anschaulichkeit
einer Windows-Anwendung hilft Ihnen dabei, den eher theoretischen Hintergrund der Programmiersprache leichter zu verstehen.
Grundlagen
1.2 Visual Studio 2015
Es wird die frei verfügbare Entwicklungsumgebung Visual Studio Community 2015 eingesetzt. Sie können sie unter Windows 7 bis Windows 10
nutzen. Diese Version von Visual Studio können Sie bei Microsoft
Community-Version
17
1
1.4
Einführung
Visual-Basic-Entwicklungsumgebung
herunterladen (www.visualstudio.com/de-de) und auf Ihrem PC installieren. 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 Fehlersuche und vieles mehr. Zur Installation verweise ich auf den Anhang.
Statt der hier empfohlenen Community-Version können Sie auch verschiedene 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 dieses 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 notwendig sind. Das Programm soll nach dem Aufruf zunächst aussehen wie in
Abbildung 1.1.
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-Studio-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 FormsAnwendung auswählen. Als Projektname wird WindowsApplication1 vorgeschlagen. Sie sollten ihn ändern, z. B. in MeinErstes.
Es erscheinen einige Elemente der Entwicklungsumgebung. Folgende Elemente sind besonders wichtig:
왘 Das Benutzerformular (engl.: Form) enthält die Oberfläche für den Benutzer des Programms (siehe Abbildung 1.3).
Form
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.
Abbildung 1.3 Benutzerformular
왘 Der Werkzeugkasten (engl.: Toolbox) enthält die Steuerelemente für
den Benutzer, mit denen er den Ablauf des Programms steuern kann. Sie
18
Toolbox
19
1
1.4
Einführung
Visual-Basic-Entwicklungsumgebung
werden vom Programmentwickler in das Formular eingefügt (siehe
Abbildung 1.4).
1
Abbildung 1.6 Projektmappen-Explorer
Abbildung 1.4 Werkzeugkasten, mit Kategorien von Steuerelementen
EigenschaftenFenster
왘 Das Eigenschaften-Fenster (engl.: Properties Window) dient zum Anzeigen 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.
Sollten der Werkzeugkasten, das Eigenschaften-Fenster oder der Projektmappen-Explorer nicht angezeigt werden, dann können Sie das
betreffende Element über das Menü Ansicht einblenden. Sollte das Formular einmal nicht sichtbar sein, können Sie es über einen Doppelklick auf
den Namen (Form1.vb) im Projektmappen-Explorer einblenden. Sollten 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.
Elemente anzeigen
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 vergrößern.
1.4.2 Einfügen von Steuerelementen
Abbildung 1.5 Eigenschaften-Fenster
ProjektmappenExplorer
20
왘 Der Projektmappen-Explorer (engl.: Solution Explorer) zeigt das
geöffnete Projekt und die darin vorhandenen Elemente (siehe Abbildung 1.6).
Zunä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 Ereignissen. In diesem Programm sollen die Buttons den Text anzeigen bzw. das
Programm beenden.
Label, Button
Um ein Steuerelement einzufügen, ziehen Sie es mithilfe der Maus vom
Werkzeugkasten an die gewünschte Stelle im Formular. Alle Steuerelemente finden sich im Werkzeugkasten unter Alle Windows Forms.
Allgemeine Steuerelemente
21
1
1.4
Einführung
Übersichtlicher ist der Zugriff über Allgemeine Steuerelemente (engl.:
Common Controls), siehe Abbildung 1.7.
Visual-Basic-Entwicklungsumgebung
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 (Optionsschaltfläche/RadioButton), frm (Formular/Form) und chk (Kontrollkästchen/
CheckBox).
cmd, txt, lbl, ...
1
Zur Änderung des Namens eines Steuerelementes müssen Sie es zunächst
auswählen. Die Auswahl kann entweder durch Anklicken des Steuerelements auf dem Formular oder durch Auswahl aus der Liste am oberen Ende
des Eigenschaften-Fensters geschehen.
Abbildung 1.7 Werkzeugkasten, Kategorie »Allgemeine Steuerelemente«
Steuerelement
auswählen
Ein Doppelklick auf ein Steuerelement im Werkzeugkasten fügt es ebenfalls 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 Steuerelement können Sie durch Auswählen und Drücken der Taste (Entf) entfernen.
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.
EigenschaftenFenster
Abbildung 1.8 Ausgewählter Button
Abbildung 1.9 Button, nach der Namensänderung
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 Programmentwicklung 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 Steuerelements (mit großem Anfangsbuchstaben).
22
Die 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.
Eigenschaft Text
Zu diesem Zeitpunkt legen Sie den Startzustand fest, also die Eigenschaften, welche die Steuerelemente zu Beginn des Programms bzw. eventuell
während des gesamten Programms haben sollen. Viele Eigenschaften können Sie auch während der Laufzeit des Programms durch den Programmcode verändern lassen.
Startzustand
23
1
1.4
Einführung
Typ
Eigenschaft
Einstellung
Formular
Text
Mein Erstes
Button
Name
cmdHallo
Text
Hallo
Name
cmdEnde
Text
Ende
Name
lblAnzeige
Text
(leer)
BorderStyle
FixedSingle
Button
Label
Tabelle 1.1 Steuerelemente mit Eigenschaften
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ählen, siehe Abbildung 1.10. Zur Änderung einiger Eigenschaften müssen Sie
eventuell sogar ein Dialogfeld aufrufen.
Visual-Basic-Entwicklungsumgebung
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 Steuerelemente des gleichen Typs stehen direkt untereinander.
Liste der Steuerelemente
1
1.4.4 Speichern eines Projekts
Die 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 regelmäßigen Abständen durchführen, damit keine Änderungen verloren
gehen können.
Alles speichern
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
Der 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 Programmcode und ordnen diesen Code dem Ereignis zu. Der Code wird in
einer Ereignisprozedur abgelegt.
Ereignis
Zum Schreiben einer Ereignisprozedur führen Sie am besten einen Doppelklick auf das betreffende Steuerelement aus. Es erscheint das Codefenster. Zwischen der Formular- und der Code-Ansicht können Sie anschließend über die Menüpunkte Ansicht • Code bzw. Ansicht • Designer hin- und herschalten. Das ist auch über die Registerkarten oberhalb
des Formulars bzw. des Codefensters möglich, siehe Abbildung 1.11.
Ereignisprozedur
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.
24
Abbildung 1.11 Registerkarten
25
1
1.4
Einführung
Nach erfolgtem Doppelklick auf den Button Hallo erscheinen im Codefenster folgende Einträge:
Public Class Form1
Private Sub cmdHallo_Click(sender As Object,
e As EventArgs) Handles cmdHallo.Click
End Sub
End Class
Listing 1.1 Projekt »MeinErstes«, Button »Hallo«, ohne Code
Innerhalb der Ereignisprozedur ist der Platz für den eigenen Programmcode.
1.4.6 Schreiben von Programmcode
1
In der Prozedur cmdHallo_Click() soll eine Befehlszeile eingefügt werden,
sodass sie anschließend wie folgt aussieht:
Public Class Form1
Private Sub cmdHallo_Click(sender As Object,
e As EventArgs) Handles cmdHallo.Click
lblAnzeige.Text = "Hallo"
End Sub
End Class
Listing 1.2 Projekt »MeinErstes«, Button »Hallo«, mit Code
VB.NET ist eine objektorientierte Sprache. Ein wichtiges Element objektorientierter 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 verwirren würde.
Der Text muss in Anführungszeichen gesetzt werden, da Visual Basic sonst
annimmt, dass es sich um eine Variable mit dem Namen Hallo handelt.
Der Inhalt einer Prozedur setzt sich aus einzelnen Anweisungen zusammen, die nacheinander ausgeführt werden. Die vorliegende Prozedur enthält nur eine Anweisung; in ihr erfolgt mithilfe des Gleichheitszeichens
eine Zuweisung.
Anweisung
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.
Zuweisung
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 ausgefü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.
Bei einer Zuweisung wird der Ausdruck rechts vom Gleichheitszeichen ausgewertet und der Variablen, der Objekt-Eigenschaft oder der Steuerelementeigenschaft 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.
Class
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 references oder 2 references. Auch sie können wir zunächst ignorieren.
26
Visual-Basic-Entwicklungsumgebung
Nach dem Wechsel auf die Formularansicht können Sie das nächste Steuerelement auswählen, für das eine Ereignisprozedur geschrieben werden
soll.
Innerhalb des Codefensters können Sie Text mit den gängigen Methoden
der Textverarbeitung editieren, kopieren, verschieben und löschen.
Code editieren
Sollten Sie bereits bei der Eingabe des Programmcodes Syntaxfehler
gemacht haben, wird das angezeigt. Sie sollten den Code unmittelbar entsprechend korrigieren.
Syntaxfehler
In der Ereignisprozedur cmdEnde_Click() soll der folgende Code stehen:
27
1
1.4
Einführung
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 innerhalb der Klasse für das aktuelle Formular befinden, bezieht sich Me auf dieses 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 Schriftfarbe dargestellt werden. Falls sich der Cursor in der betreffenden Zeile
befindet, dann erscheint links von der Zeile eine gelbe Glühbirne. Platzieren Sie die Maus über dieser Glühbirne, dann wird der Zugang zu Hinweisen 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.
Visual-Basic-Entwicklungsumgebung
1.4.7 Kommentare
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äutert, damit Sie selbst oder auch ein anderer Programmierer sie später leichter 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.
1
Einfaches
Hochkomma
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 Anwendung
Close()
End Sub
Listing 1.4 Projekt »MeinErstes«, Button »Ende«, mit Kommentar
Ein kleiner Trick: Sollen bestimmte Programmzeilen für einen Test des Programms kurzfristig nicht ausgeführt werden, können Sie sie auskommentieren, 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 Symbolleiste anklicken, siehe Abbildung 1.13. Rechts daneben befindet sich das
Symbol, das die Auskommentierung nach dem Test wieder rückgängig
macht.
Code auskommentieren
Abbildung 1.13 Kommentar ein/aus
1.4.8 Starten, Ausführen und Beenden des Programms
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 Eigenschaften-Fenster eingestellt.
28
Nach dem Einfügen der Steuerelemente und dem Erstellen der Ereignisprozeduren 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 Funktionstaste (F5) oder den Menüpunkt Debuggen • Debugging starten. Das
Formular erscheint, das Betätigen der Buttons führt zum programmierten
Ergebnis.
Programm starten
29
1
1.4
Einführung
Programm beenden
Zur regulären Beendigung eines Programms dient der Button mit der Aufschrift 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 mehrmals durch Aufruf zu testen und nicht erst, wenn das Programm vollständig erstellt worden ist. Geeignete Zeitpunkte sind z. B.
왘 nach dem Einfügen der Steuerelemente und dem Zuweisen der Eigenschaften, die sie zu Programmbeginn haben sollen,
왘 nach dem Erstellen jeder Ereignisprozedur.
Visual-Basic-Entwicklungsumgebung
wählen Sie zunächst das gewünschte Projektverzeichnis aus und anschließend die gleichnamige Datei mit der Endung .sln.
1
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 • Projektmappe neu erstellen erstellen.
1.4.11 Übung
Erstellen Sie ein Windows-Programm mit einem Formular, das zwei Buttons und ein Label beinhaltet, siehe Abbildung 1.14. Bei Betätigung des ersten 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.
Übung ÜName
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 Projekts im Verzeichnis Eigene Dokumente\Visual Studio 2015\Projects\
MeinErstes\MeinErstes\bin\Debug. Sie können das Programm also im Windows-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, werden 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
30
Zum Öffnen eines vorhandenen Projekts wählen Sie den Menüpunkt
Datei • Projekt öffnen. Im darauffolgenden Dialogfeld Projekt öffnen
Abbildung 1.14 Übung ÜName
1.4.12 Regeln für Zeilenumbrüche
Visual Basic ermöglicht Zeilenumbrüche an bestimmten Stellen einer
Anweisung auf einfache Art und Weise. Das erhöht die Lesbarkeit des Programmcodes. Einige Regeln wurden bereits im ersten Programm angewandt. Hier noch einmal die Prozedur cmdHallo_Click():
Zeilenumbruch
Private Sub cmdHallo_Click(sender As Object,
e As EventArgs) Handles cmdHallo.Click
lblAnzeige.Text = "Hallo"
End Sub
Listing 1.5 Projekt »MeinErstes«, Ausschnitt
Ein Zeilenumbruch ist möglich:
Regeln
왘 nach einer öffnenden Klammer, siehe erste Prozedurzeile
왘 vor einer schließenden Klammer, siehe dritte Prozedurzeile
왘 nach einem Komma, siehe zweite Prozedurzeile
31
1
1.5
Einführung
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 Steuerelemente markieren
Weitere Möglichkeiten bieten die Menüpunkte im Menü Format. In vielen Fällen müssen vorher mehrere Steuerelemente auf einmal markiert
werden, siehe Abbildung 1.15.
Arbeiten mit Steuerelementen
왘 durch Mehrfachauswahl, indem ab dem zweiten auszuwählenden
Steuerelement die (ª)-Taste (wie für Großbuchstaben) oder die (Strg)Taste gedrückt wird.
Über das Menü Format haben Sie anschließend folgende Möglichkeiten
zur Anpassung der Steuerelemente:
1
Menü »Format«
왘 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).
왘 Die horizontalen und vertikalen Abstände zwischen den ausgewählten
Steuerelementen können angeglichen, vergrößert, verkleinert oder entfernt werden (Menü Format • Horizontaler Abstand/Vertikaler
Abstand).
Einheitliche
Abstände
왘 Die Steuerelemente können horizontal oder vertikal innerhalb des Formulars zentriert werden (Menü Format • Auf Formular zentrieren).
왘 Sollten sich die Steuerelemente teilweise überlappen, können Sie einzelne Steuerelemente in den Vorder- bzw. Hintergrund schieben (Menü
Format • Reihenfolge).
왘 Sie können alle Steuerelemente gleichzeitig gegen versehentliches Verschieben 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 ausgerichtet sind und im gleichen vertikalen Abstand voneinander stehen.
Abbildung 1.15 Mehrere markierte Elemente
Das geschieht entweder
Abbildung 1.16 Nach der Formatierung
왘 durch Umrahmung der Elemente mit einem Rechteck, nachdem Sie
zuvor das Steuerelement (Maus-)Zeiger ausgewählt haben, oder
32
33
1
1.5
Einführung
Arbeiten mit Steuerelementen
Übung
1
Laden Sie das Projekt MeinErstes aus dem vorherigen Abschnitt, markieren
Sie darin mehrere Steuerelemente und testen Sie die einzelnen Möglichkeiten des Format-Menüs.
1.5.2 Steuerelemente kopieren
Steuerelemente
kopieren
Zur schnelleren Erzeugung eines Projekts können vorhandene Steuerelemente 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 umbenannt und an der gewünschten Stelle angeordnet werden.
Übung
Laden Sie das Projekt MeinErstes aus Abschnitt 1.4 und kopieren Sie einzelne Steuerelemente. Kontrollieren Sie anschließend die Liste der vorhandenen 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.
34
Abbildung 1.17 Position und Größe bestimmen
Der Programmcode:
Public Class Form1
Private Sub cmdPositionRel_Click(...) Handles ...
cmdTest.Location = New Point(
cmdTest.Location.X + 20, cmdTest.Location.Y)
End Sub
Private Sub cmdPositionAbs_Click(...) Handles ...
cmdTest.Location = New Point(100, 200)
End Sub
Private Sub cmdGrößeRel_Click(...) Handles ...
cmdTest.Size = New Size(
cmdTest.Size.Width + 20, cmdTest.Size.Height)
End Sub
Private Sub cmdGrößeAbs_Click(...) Handles ...
cmdTest.Size = New Size(50, 100)
End Sub
End Class
Listing 1.6 Projekt »Steuerelemente«
Zur Erläuterung:
왘 Der Kopf der einzelnen Prozeduren wurde aus Gründen der Übersichtlichkeit 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.
Verkürzte
Darstellung
왘 Das Formular enthält fünf Buttons. Die oberen vier Buttons dienen der
Veränderung von Position und Größe des fünften Buttons.
35
1
1.5
Einführung
왘 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 bereitzustellen.
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.Location.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 Buttons 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 Komponente 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.
Arbeiten mit Steuerelementen
1.5.4 Vergabe und Verwendung von Namen
1
Beachten Sie in allen Programmen, dass jedes Steuerelement seinen eigenen, 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 vorhandener 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, lblBeginnDatum 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 verwendet haben.
1.5.5 Verknüpfung von Texten, mehrzeilige Texte
Es lassen sich mehrere Texte in einer Ausgabe mithilfe des Zeichens & miteinander verknüpfen. Falls Sie eine mehrzeilige Ausgabe wünschen, müssen Sie zusätzlich einen Zeilenvorschub mithilfe der integrierten VisualBasic-Konstante vbCrLf eingeben.
& und vbCrLf
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 Sub
End Class
Abbildung 1.18 Veränderung von Eigenschaften zur Laufzeit
Listing 1.7 Projekt »Steuerelemente«, mit Anzeige
36
37
1
1.5
Einführung
Nach einigen Klicks und der Betätigung des Buttons Anzeige sieht das Formular aus wie in Abbildung 1.19.
Arbeiten mit Steuerelementen
Das Formular sieht nach der Änderung der Eigenschaft Farbe aus wie in
Abbildung 1.20, wobei sich die Farbänderung bei der Schwarz-Weiß-Darstellung im gedruckten Buch leider nicht gut wiedergeben lässt.
1
Abbildung 1.19 Anzeige der Eigenschaften
1.5.6 Eigenschaft BackColor, Farben allgemein
BackColor
Abbildung 1.20 Nach Änderung der Eigenschaft »Farbe«
Die Hintergrundfarbe eines Steuerelements wird mit der Eigenschaft BackColor 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 eingestellt 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.Yellow
lblAnzeige.BackColor = Color.FromArgb(192, 255, 0)
End Sub
End 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()
38
왘 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.
39
Kapitel 2
Grundlagen
2
In diesem Kapitel erlernen Sie auf anschauliche Weise die Sprachgrundlagen von Visual Basic in Verbindung mit den gängigen Steuerelementen
von Windows-Programmen.
In den folgenden Abschnitten lernen Sie wichtige Elemente der Programmierung, wie Variablen, Operatoren, Verzweigungen und Schleifen, gemeinsam 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
Für die Namen von Variablen gelten in Visual Basic die folgenden Regeln:
Namensregeln
왘 Sie beginnen mit einem Buchstaben.
왘 Sie können nur aus Buchstaben, Zahlen und einigen wenigen Sonderzeichen (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 werden Programme eindeutiger, lesbarer und fehlerfreier.
41
2
2.1
Grundlagen
Auswahl des
Datentyps
2.1.2 Deklarationen
Einige weitere nützliche Datentypen sind:
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 Nachkommastellen, Zahlen mit Nachkommastellen oder z. B. logische Werte speichern
möchten.
왘 der Datentyp Boolean mit den Werten True oder False (wahr oder falsch)
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 gewü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 werden. 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 Nachkommastellen:
왘 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
42
Variablen und Datentypen
왘 der Datentyp Date mit Werten für Datumsangaben vom 1. Januar des
Jahres 1 bis zum 31. Dezember 9999
2
Date
왘 der Datentyp Char für einzelne Zeichen
왘 der Datentyp String für Zeichenketten mit variabler Länge
String
Im folgenden Beispiel werden Variablen dieser Typen deklariert, mit Werten versehen und in einem Label angezeigt (Projekt Datentypen).
Public Class Form1
Private Sub cmdAnzeige_Click(...) Handles ...
' Ganze Zahlen
Dim By As Byte
Dim Sh As Short
Dim It As Integer
Dim Lg As Long
' Zahlen mit Nachkommastellen
Dim Sg As Single
Dim Db As Double
Dim Dm As Decimal
' Boolesche Variable, Datum, Zeichen, Zeichenkette
Dim Bo As Boolean
Dim Dt As Date
Dim Ch As Char
Dim St As String
' Ganze Zahlen
By = 200
Sh = 30000
It = 2000000000
Lg = 3000000000
' Zahlen mit Nachkommastellen
Sg = 1 / 7
Db = 1 / 7
Dm = 1D / 7
43
2
2.1
Grundlagen
' Boolesche Variable, Datum, Zeichen, Zeichenkette
Bo = True
Dt = "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 Sub
End Class
Listing 2.1 Projekt »Datentypen«
Das Programm hat nach Betätigung des Buttons die Ausgabe wie in Abbildung 2.1 dargestellt.
Variablen und Datentypen
왘 Variablen können bereits bei der Deklaration einen Wert erhalten, zum
Beispiel: Dim Sh As Short = 30000.
2
왘 Bei den Datentypen für ganze Zahlen führt die Zuweisung einer zu
großen Zahl zu einer Fehlermeldung.
왘 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 ungenauen Speicherung.
Genauigkeit
왘 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 Zahlen dann unmittelbar in Zahlen mit Nachkommastellen umgewandelt.
Exponentialschreibweise
왘 Werte für Zeichen, Zeichenketten und Datumsvariablen müssen in doppelten Anführungszeichen angegeben werden.
왘 Die Datentypen Integer, Double, Boolean und String werden am häufigsten eingesetzt.
Übung
Schreiben Sie ein Programm, in dem Ihr Nachname, Vorname, Ihre
Adresse, Ihr Geburtsdatum und Ihr Alter jeweils in Variablen eines geeigneten Datentyps gespeichert und anschließend wie in Abbildung 2.2 ausgegeben werden.
Übung
ÜDatentypen
Abbildung 2.2 Übung ÜDatentypen
Abbildung 2.1 Wichtige Datentypen
Dim … As
44
Zur Erläuterung:
2.1.4 Gültigkeitsbereich
왘 Variablen werden mit Dim ... As ... deklariert. Mehrere Variablen desselben Datentyps können, durch Kommata getrennt, innerhalb einer
Zeile deklariert werden (z. B. Dim x, y As Integer).
Variablen, 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
Lokal
45
2
2.1
Grundlagen
Variablen. Sobald die Prozedur abgearbeitet wurde, steht der Wert auch
nicht mehr zur Verfügung. Beim nächsten Aufruf derselben Prozedur werden diese Variablen neu deklariert und erhalten neue Werte.
Static
Anders verhält es sich mit statischen Variablen. Sie behalten ihren Wert, solange 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 innerhalb der gesamten Klasse gültig, hier also innerhalb der Klasse des Formulars. 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
lblAnzeige.Text = "Sx: " & Sx & " x: " & x & " Mx: " & Mx
End Sub
2
Private Sub cmdAnzeigen2_Click(...) Handles ...
Dim Mx As Integer
Mx = Mx + 1
lblAnzeige.Text = "Mx: " & Mx
End Sub
End 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.
Variablen, die mit dem Schlüsselwort Public vereinbart werden, sind öffentlich. 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
Variablen und Datentypen
왘 Eine klassenweit gültige Variable wird innerhalb einer Prozedur von
einer lokalen Variablen mit dem gleichen Namen ausgeblendet.
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.
Im folgenden Beispiel werden Variablen unterschiedlicher Gültigkeitsbereiche deklariert, an verschiedenen Stellen verändert und ausgegeben (Projekt Gültigkeitsbereich).
Public Class Form1
Private Mx As Integer
Private Sub cmdAnzeigen1_Click(...) Handles ...
Static Sx As Integer
Dim x As Integer
Sx = Sx + 1
Mx = Mx + 1
x = x + 1
46
Abbildung 2.4 Lokale Variable
Hinweis: Die Variablen wurden vor ihrer ersten Benutzung nicht initialisiert, d. h., sie wurden nicht mit einem Startwert besetzt. In Visual Basic
haben Zahlenvariablen zwar automatisch den Startwert 0, trotzdem sollten Sie die Initialisierung im Sinne eines sauberen Programmierstils im
Normalfall selbst vornehmen.
Startwert setzen
47
2
2.1
Grundlagen
Übung
Übung ÜGültigkeitsbereich
Erstellen Sie ein Programm, in dem zwei Buttons, ein Label und drei Variablen eines geeigneten Datentyps eingesetzt werden:
왘 die klassenweit gültige Variable x
왘 die Variable y, die nur lokal in der Prozedur zum Click-Ereignis des ersten Buttons gültig ist
왘 die Variable z, die nur lokal in der Prozedur zum Click-Ereignis des zweiten 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.
Variablen und Datentypen
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.
Integrierte
Konstanten
2
Im folgenden Beispiel werden mehrere Konstanten vereinbart und genutzt
(Projekt Konstanten).
Public Class Form1
Private Const MaxWert = 75
Private Const Eintrag = "Picture"
Private Sub cmdKonstanten_Click(...) Handles ...
Const MaxWert = 55
Const MinWert = 5
lblAnzeige.Text = (MaxWert - MinWert) / 2 &
vbCrLf & Eintrag
End Sub
End Class
Listing 2.3 Projekt »Konstanten«
Abbildung 2.5 Ausgabe der ersten Methode nach einigen Klicks
Zur Erläuterung:
왘 Konstanten werden mithilfe des Schlüsselworts Const definiert.
Const
왘 Die Konstanten MaxWert und Eintrag werden mit klassenweiter Gültigkeit festgelegt.
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 aussagekrä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.
왘 Innerhalb der Prozedur werden die beiden lokalen Konstanten MaxWert
und MinWert festgelegt. MaxWert blendet die klassenweit gültige Konstante gleichen Namens aus, wie es in unten stehender Abbildung 2.7 zu
sehen ist.
왘 Außerdem kommt noch die integrierte Konstante vbCrLf zum Einsatz.
Abbildung 2.7 Konstanten
48
49
2
2.2
Grundlagen
Konstanten
aufzählen
2.1.6 Enumerationen
Zur Erläuterung:
Enumerationen sind Aufzählungen von Konstanten, die thematisch zusammengehören. Alle Enumerationen haben den gleichen Datentyp, der
ganzzahlig sein muss. Bei der Deklaration werden ihnen Werte zugewiesen,
am besten explizit.
왘 Enumerationen werden mithilfe des Schlüsselworts Enum definiert.
Innerhalb von Visual Basic gibt es zahlreiche vordefinierte Enumerationen.
Ähnlich wie bei den integrierten Konstanten sind die Namen der Enumerationen und deren Elemente besser lesbar als die durch sie repräsentierten
Zahlen.
Operatoren
Enum
2
왘 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 Enumeration Zahl verwendet. Die beiden Zahlen, die sie repräsentieren, werden miteinander multipliziert, siehe Abbildung 2.8.
Ein Beispiel: Die Enumeration DialogResult ermöglicht es Ihnen als Programmierer, die zahlreichen möglichen Antworten des Benutzers beim
Einsatz von Windows-Standarddialogfeldern (Ja, Nein, Abbrechen, Wiederholen, 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 Integer
Eins = 1
Zwei = 2
Drei = 3
Vier = 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.Saturday
End Sub
End Class
Listing 2.4 Projekt »Konstanten«, Teil 2
50
Abbildung 2.8 Erste Enumeration
왘 In der zweiten Ereignisprozedur werden zwei Elemente der vordefinierten 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.
Es gibt verschiedene Kategorien von Operatoren. Vorrangregeln (Prioritäten) sind für die Reihenfolge der Abarbeitung zuständig, falls mehrere Operatoren innerhalb eines Ausdrucks eingesetzt werden. Diese Vorrangregeln
sind weiter unten in diesem Abschnitt angegeben. Falls Sie sich bei der Ver-
Priorität
51
2
2.2
Grundlagen
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 Tabelle 2.1.
Operator
Beschreibung
+
Addition
-
Subtraktion oder Negation
*
Multiplikation
/
Division
\
Ganzzahldivision
^
Potenzierung
Mod
Modulo
Tabelle 2.1 Rechenoperatoren
Ganzzahldivision
Die Ganzzahldivision erfolgt in zwei Schritten. Im ersten Schritt werden Dividend 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.
52
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
Zur Potenzierung einer Zahl dient der Operator ^ (hoch), Beispiele siehe Tabelle 2.4.
Ausdruck
Ergebnis
2^5
32
3^2^3
729
2 ^ 5.4
42.2242531447326
(-2) ^ 5
-32
Tabelle 2.4 Potenzierung
Multiplikation und Division innerhalb eines Ausdrucks sind gleichrangig
und werden von links nach rechts in der Reihenfolge ihres Auftretens ausgewertet. Dasselbe gilt für Additionen und Subtraktionen, die zusammen
in einem Ausdruck auftreten. Multiplikation und Division werden vor Addition und Subtraktion ausgeführt.
Mit Klammern können Sie diese Rangfolge außer Kraft setzen, damit bestimmte Teilausdrücke vor anderen Teilausdrücken ausgewertet werden.
In Klammern gesetzte Operationen haben grundsätzlich Vorrang. Innerhalb der Klammern gilt jedoch die normale Rangfolge der Operatoren.
Klammern
Alle Berechnungen innerhalb dieses Abschnitts können Sie auch mithilfe
des Codes im Projekt Rechenoperatoren nachvollziehen.
Projekt
Ergebnis
19 / 4
4.75
19 \ 4
4
19 \ 4.6
3
Übung
19.5 \ 4.2
5
Berechnen Sie die beiden folgenden Ausdrücke, speichern Sie das Ergebnis
in einer Variablen eines geeigneten Datentyps und zeigen Sie es an:
Der Modulo-Operator Mod berechnet den Rest einer Division. Zwei Beispiele
sehen Sie in Tabelle 2.3.
2
Tabelle 2.3 Modulo-Operator
Ausdruck
Tabelle 2.2 Ganzzahldivision
Modulo
Ausdruck
Operatoren
Übung ÜRechenoperatoren
왘 1. Ausdruck: 3 * –2.5 + 4 * 2
왘 2. Ausdruck: 3 * (-2.5 + 4) * 2
53
2
2.2
Grundlagen
2.2.2 Vergleichsoperatoren
Vergleich
Vergleichsoperatoren (siehe Tabelle 2.5) dienen dazu festzustellen, ob bestimmte Bedingungen zutreffen oder nicht. Das Ergebnis lässt sich u. a. zur
Ablaufsteuerung von Programmen nutzen. Abschnitt 2.4 geht hierauf genauer ein.
Ausdruck
Ergebnis
"aba" Like "a?a"
True
"asdlfigc" Like "a?d?f*c"
True
Operatoren
2
Tabelle 2.7 Mustervergleich (Forts.)
Operator
Beschreibung
<
kleiner als
<=
kleiner als oder gleich
>
größer als
>=
größer als oder gleich
Ermitteln Sie das Ergebnis der beiden folgenden Ausdrücke, speichern Sie
es in einer Variablen eines geeigneten Datentyps und zeigen Sie es an:
=
gleich
왘 1. Ausdruck: 12 – 3 >= 4 * 2.5
<>
ungleich
왘 2. Ausdruck: "Maier" Like "M??er"
Alle Vergleiche innerhalb dieses Abschnitts können Sie auch mithilfe des
Codes im Projekt Vergleichsoperatoren nachvollziehen.
Projekt
Übung
Übung ÜVergleichsoperatoren
Tabelle 2.5 Vergleichsoperatoren
2.2.3 Logische Operatoren
Einige Beispiele sehen Sie in Tabelle 2.6.
Like
Ausdruck
Ergebnis
5>3
True
3 = 3.2
False
5 + 3 * 2 >= 12
False
Logische Operatoren dienen dazu, mehrere Bedingungen zusammenzufassen. Das Ergebnis lässt sich ebenfalls u. a. zur Ablaufsteuerung von Programmen nutzen (siehe hierzu auch Abschnitt 2.4). Die logischen
Operatoren sehen Sie in Tabelle 2.8.
Operator
Beschreibung
Das Ergebnis ist True, wenn ...
Not
Nicht
... der Ausdruck False ist.
Tabelle 2.6 Nutzung von Vergleichsoperatoren
And
Und
... beide Ausdrücke True sind.
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.
Or
Inklusives Oder
... mindestens ein Ausdruck True ist.
Xor
Exklusives Oder
... genau ein Ausdruck True ist.
Logik
Tabelle 2.8 Logische Operatoren
Ausdruck
Ergebnis
"abxba" Like "a*a"
True
"abxba" Like "a?a"
False
Es seien die Variablen A = 1, B = 3 und C = 5 gesetzt. Die Ausdrücke in der ersten Spalte von Tabelle 2.9 ergeben dann jeweils die Ergebnisse in der zweiten Spalte.
Tabelle 2.7 Mustervergleich
54
55
2
2.2
Grundlagen
Ausdruck
Ergebnis
Not (A < B)
False
(B > A) And (C > B)
True
(B < A) Or (C < B)
False
(B < A) Xor (C > B)
True
Operatoren
Das Ergebnis ist in Abbildung 2.10 zu sehen. Ein weiteres Beispiel stand bereits in Abschnitt 1.5.5.
2
Abbildung 2.10 Verkettung
Tabelle 2.9 Ausdrücke mit logischen Operatoren
2.2.5 Zuweisungsoperatoren
Projekt
Übung ÜLogische
Operatoren
Alle Berechnungen innerhalb dieses Abschnitts können Sie auch mithilfe
des Codes im Projekt LogischeOperatoren nachvollziehen.
Übung
Ermitteln Sie das Ergebnis der beiden folgenden Ausdrücke, speichern Sie
es in einer Variablen eines geeigneten Datentyps und zeigen Sie es an:
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.
2.2.4 Verkettungsoperator
*=
x *= 3
Der Wert von x wird auf das Dreifache erhöht.
Der Operator & dient der Verkettung von Zeichenfolgen. Ist einer der Ausdrücke keine Zeichenfolge, sondern eine Zahl oder Datumsangabe, wird er
in einen String verwandelt. Das Gesamtergebnis ist dann wiederum eine
Zeichenfolge. Beispiel:
/=
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 verlängert.
왘 1. Ausdruck: 4 > 3 And –4 > –3
왘 2. Ausdruck: 4 > 3 Or –4 > –3
Umwandlung
in String
Der einfachste Zuweisungsoperator, das Gleichheitszeichen, wurde bereits
genutzt. Es gibt zur Verkürzung von Anweisungen noch einige weitere Zuweisungsoperatoren, siehe Tabelle 2.10.
Public Class Form1
Private Sub cmdAnzeige_Click(...) Handles ...
Dim gesamt As String
Dim s As Single
Dim i As Integer
Dim d As Date
s = 4.6
i = -12
d = "18.07.2015"
gesamt = "Hallo " & s & " " & i & " " & d
lblAnzeige.Text = gesamt
End Sub
End Class
Zeichen =
Tabelle 2.10 Zuweisungsoperatoren
2.2.6 Rangfolge der Operatoren
Enthält ein Ausdruck mehrere Operationen, werden die einzelnen Teilausdrücke in einer bestimmten Rangfolge ausgewertet und aufgelöst, die als
Rangfolge bzw. Priorität der Operatoren bezeichnet wird. Es gilt die Rangfolge in Tabelle 2.11.
Priorität
Listing 2.5 Projekt »Verkettungsoperator«
56
57
2
2.3
Grundlagen
Operator
Beschreibung
Nr.
Werte
Bedingung
^
Exponentialoperator
3
z=10 w=100
z<>0 Or z>w Or w-z=90
-
negatives Vorzeichen
4
z=10 w=100
z=11 And z>w Or w-z=90
*, /
Multiplikation, Division
5
x=1.0 y=5.7
x>=.9 And y<=5.8
\
Ganzzahldivision
6
x=1.0 y=5.7
x>=.9 And Not(y<=5.8)
Mod
Modulo
7
n1=1 n2=17
n1>0 And n2>0 Or n1>n2 And n2<>17
+, -
Addition, Subtraktion
8
n1=1 n2=17
n1>0 And (n2>0 Or n1>n2) And n2<>17
&
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
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 anderen Teilausdrücken ausgewertet werden.
In Klammern gesetzte Operationen haben grundsätzlich Vorrang. Innerhalb der Klammern gilt jedoch wieder die normale Rangfolge der Operatoren.
Übung ÜOperatoren
Übung
Sind die Bedingungen in Tabelle 2.12 wahr oder falsch? Lösen Sie die Aufgabe möglichst ohne PC.
Nr.
Werte
Bedingung
1
a=5 b=10
a>0 And b<>10
2
a=5 b=10
a>0 Or b<>10
Einfache Steuerelemente
2
Tabelle 2.12 Übung ÜOperatoren (Forts.)
2.3 Einfache Steuerelemente
Windows-Programmierung mit Visual Basic besteht aus zwei Teilen: der
Arbeit mit visuellen Steuerelementen und der Programmierung mit der
Sprache. Beides soll in diesem Buch parallel vermittelt werden, damit die
eher theoretischen Abschnitte zur Programmiersprache durch eine anschauliche Praxis vertieft werden können.
Daher wird in diesem Abschnitt mit vier weiteren Steuerelementen gearbeitet, bevor im nächsten Abschnitt die Verzweigungen zur Programmsteuerung vorgestellt werden: Panel, Zeitgeber, Textfeld und
Zahlenauswahlfeld.
2.3.1 Panel
Ein Panel dient normalerweise als Container für andere Steuerelemente. In
diesem Abschnitt wird es zur visuellen Darstellung eines Rechtecks und für
eine kleine Animation genutzt.
Container
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.
Tabelle 2.12 Übung ÜOperatoren
58
59
2
2.3
Grundlagen
In Abbildung 2.11 und Abbildung 2.12 ist das Panel im Startzustand bzw.
nach einigen Klicks zu sehen.
Einfache Steuerelemente
Private Sub cmdLinks_Click(...) Handles ...
panMove.Location = New Point(panMove.Location.X - 10,
panMove.Location.Y)
End Sub
2
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
Abbildung 2.11 Panel, Startzustand
Abbildung 2.12 Panel, nach Verschiebung
Der Programmcode:
Public Class Form1
Private Sub cmdOben_Click(...) Handles ...
panMove.Location = New Point(panMove.Location.X,
panMove.Location.Y - 10)
End Sub
Ein Zeitgeber (engl.: Timer) erzeugt in festgelegten Abständen Zeittakte.
Diese Zeittakte sind Ereignisse, die Sie als Entwickler mit Aktionen verbinden können. Das zugehörige Ereignis heißt Tick. Ein Zeitgeber kann wie jedes andere Steuerelement zum Formular hinzugefügt werden. Da es sich
aber um ein nicht sichtbares Steuerelement handelt, wird er unterhalb des
Formulars angezeigt. Auch zur Laufzeit ist er nicht sichtbar.
Timer
Seine wichtigste Eigenschaft ist das Zeitintervall, in dem das Ereignis auftreten soll. Dieses Zeitintervall wird in Millisekunden angegeben.
Intervall
Die Eigenschaft Enabled dient der Aktivierung bzw. Deaktivierung des Zeitgebers. Sie kann zur Entwicklungszeit oder zur Laufzeit auf True oder False
gestellt werden.
Enabled
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 Betätigung des Stop-Buttons kommt kein weiteres x hinzu.
Private Sub cmdUnten_Click(...) Handles ...
panMove.Location = New Point(panMove.Location.X,
panMove.Location.Y + 10)
End Sub
Abbildung 2.13 Nach einigen Sekunden
60
61
2
2.3
Grundlagen
Einfache Steuerelemente
Der zugehörige Code:
Public Class Form1
Private Sub timAnzeige_Tick(...) Handles timAnzeige.Tick
lblAnzeige.Text &= "x"
End Sub
2
Private Sub cmdStart_Click(...) Handles ...
timAnzeige.Enabled = True
End Sub
Private Sub cmdStop_Click(...) Handles ...
timAnzeige.Enabled = False
End Sub
End Class
Listing 2.7 Projekt »Zeitgeber«
Übung
Übung ÜPanelZeitgeber
Erstellen Sie eine Windows-Anwendung. In der Mitte eines Formulars sollen zu Beginn vier Panels verschiedener Farbe der Größe 20 × 20 Pixel platziert werden, siehe Abbildung 2.14.
Abbildung 2.15 Nach einigen Sekunden
Übung
Diese Übung gehört nicht zum Pflichtprogramm. Sie ist etwas umfangreicher, verdeutlicht aber die Möglichkeiten einer schnellen Visualisierung
von Prozessen durch Visual Basic mit wenigen Programmzeilen.
Übung ÜKran
Konstruieren Sie aus mehreren Panels einen Kran (Fundament, senkrechtes Hauptelement, waagerechter Ausleger, senkrechter Haken am Ausleger). 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
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.
62
Denken Sie daran, dass bei vielen Bewegungen mehrere Steuerelemente
bewegt werden müssen, da der Kran sonst seinen Zusammenhalt verliert.
Manche Aktionen resultieren nur aus Größenveränderungen (Eigenschaften Width und Height), manche nur aus Ortsveränderungen (Location),
manche aus beidem. In Abbildung 2.16 und Abbildung 2.17 sehen Sie den
Kran im Startzustand bzw. nach einigen Klicks.
Es können natürlich immer noch widersprüchliche Bewegungen auftreten.
Mit weiter zunehmendem Programmierwissen können Sie diesen Problemen später noch abhelfen.
63
2
2.3
Grundlagen
Einfache Steuerelemente
왘 MaxLength: Mit dieser Eigenschaft lässt sich die Anzahl der Zeichen des
Textfelds beschränken. Ist keine Beschränkung vorgesehen, kann das
Textfeld 32K Zeichen aufnehmen.
왘 PasswordChar: Falls für diese Eigenschaft im Entwurfsmodus ein Platzhalterzeichen 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.
2
Passwort
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.
Abbildung 2.16 Startzustand
Im nachfolgenden Programm im Projekt Textfelder kann der Benutzer in
einem Textfeld einen Text eingeben. Nach Betätigung des Buttons Ausgabe wird der eingegebene Text in einem zusammenhängenden Satz ausgegeben, siehe Abbildung 2.18.
Abbildung 2.18 Eingabe in Textfeld
Der Code lautet wie folgt:
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 Eigenschaft Text des Textfelds gespeichert. Das Aussehen und das Verhalten eines 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.
64
Public Class Form1
Private Sub cmdAusgabe_Click(...) Handles ...
lblAusgabe.Text = "Sie haben '" & txtEingabe.Text &
"' eingegeben"
End Sub
End Class
Listing 2.8 Projekt »Textfelder«
Zur Erläuterung:
왘 Die Eigenschaft Text des Textfelds speichert die Eingabe. Die Eigenschaft
wird in einen längeren Ausgabetext eingebettet.
65
2
2.3
Grundlagen
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öglich, sobald Sie Verzweigungen zur Programmsteuerung beherrschen.
Ausnahmebehandlung
Einfache Steuerelemente
2
Abbildung 2.20 Anzeige des Fehlers
Es erscheint ein zusätzliches Dialogfeld. Darin können Sie den Button Weiter betätigen, dann wird das Programm beendet. Mit dem Button Unterbrechen wird das Programm unterbrochen. Bei einem unterbrochenen
Programm können Sie die aktuellen Werte von Variablen kontrollieren, indem Sie die Maus über dieser Variablen platzieren. Anschließend muss das
Programm über den Menüpunkt Debuggen • Debugging beenden beendet werden, bevor es sich neu starten lässt.
Die Eingabe einer Zahl, bei der ein Punkt statt einem Komma zur Abtrennung von Nachkommastellen eingegeben wird, führt zu einem ganz anderen Rechenergebnis, siehe Abbildung 2.21. Der Punkt wird ignoriert, die
Zahl wird als 352 angesehen und führt so zu dem Ergebnis 704.
– Allgemein können Sie Programme so schreiben, dass ein Programmabbruch 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.21 Punkt vor den Nachkommastellen
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.
Abbildung 2.19 Eingabe einer Zahl mit Nachkommastellen
Debugging beenden
66
Die Eingabe einer Zeichenkette, z. B. abc, führt zur Anzeige einer nicht behandelten Ausnahme. Die Zeile, in der der Fehler auftritt, wird im Code
markiert, damit der Fehler beseitigt werden kann (siehe Abbildung 2.20).
ToDouble()
Private Sub cmdRechnen2_Click(...) Handles ...
lblAusgabe.Text = Convert.ToDouble(txtEingabe.Text) * 2
End Sub
Listing 2.10 Projekt »Textfelder«, Methode ToDouble()
67
2
2.4
Grundlagen
Verzweigungen
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
Abbildung 2.22 Zahlenauswahlfeld
Die Eigenschaften werden zur Entwicklungszeit wie folgt eingestellt:
2.3.4 Zahlenauswahlfeld
NumericUpDown
Value
Das Steuerelement Zahlenauswahlfeld (NumericUpDown) bietet eine andere
Möglichkeit, Zahlenwerte an ein Programm zu übermitteln. Die Zahlenwerte können innerhalb selbst gewählter Grenzen und in selbst definierten
Schritten über zwei kleine Pfeiltasten ausgewählt werden. Sie können aber
auch weiterhin eingegeben werden, wie bei einem Textfeld.
왘 Maximum, Minimum: Werte -5 und +5
왘 Increment: Wert 0,1
왘 DecimalPlaces: Wert 1, zur Anzeige einer einzelnen Nachkommastelle
Wichtige Eigenschaften des Steuerelements sind die folgenden:
Der Code lautet:
왘 Value bezeichnet zur Entwicklungszeit den Startwert und zur Laufzeit
den vom Benutzer aktuell eingestellten Wert.
Public Class Form1
Private Sub numEingabe_ValueChanged(...) _
Handles numEingabe.ValueChanged
lblAusgabe.Text = numEingabe.Value
End Sub
End Class
왘 Maximum, Minimum bestimmen den größtmöglichen Wert und den kleinstmöglichen Wert der Eigenschaft Value. Es handelt sich also um die
Werte, die durch die Auswahl mit den Pfeiltasten ganz oben und ganz
unten erreicht werden können.
왘 Increment 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
왘 Value: Wert 2, die Anwendung startet also bei dem Wert 2,0 für das Zahlenauswahlfeld
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 Zahlenauswahlfeld einstellen. Der ausgewählte Wert wird unmittelbar in einem
Label angezeigt, siehe Abbildung 2.22.
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 Steuerung dieser Reihenfolge. Die Kontrollstrukturen unterteilen sich in Verzweigungen 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 Bedingungen die Programmausführung an einen bestimmten Anweisungsblock. Bedingungen erstellen Sie mithilfe der bereits vorgestellten
Vergleichsoperatoren.
Seltener genutzt werden außerdem noch die Auswahlfunktionen IIf()
und Choose().
68
69
2
2.4
Grundlagen
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 mehrere Anweisungen handeln, die dann durch einen Doppelpunkt (:) voneinander getrennt sind. In jedem Fall muss der gesamte Block in einer Zeile
untergebracht werden. If-Strukturen können auch ineinander verschachtelt werden.
Unterstrich
Im nachfolgenden Programm im Projekt EinzeiligesIf wird das einzeilige If
in vier verschiedenen Beispielen genutzt. Beachten Sie dabei, dass die einzelnen 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-Verzweigungen.
Public Class Form1
Private Sub cmdAnzeige1_Click(...) Handles ...
Dim x As Integer
x = -1
If x < 0 Then lblAnz1.Text = "Negativ"
End Sub
Private Sub cmdAnzeige2_Click(...) Handles ...
Dim x As Integer
x = -1
If x > 0 Then lblAnz2.Text = "Positiv" _
Else lblAnz2.Text = "Negativ oder Null"
End Sub
Private Sub cmdAnzeige3_Click(...) Handles ...
Dim x As Integer
x = -1
If x > 0 Then lblAnz3.Text = "Positiv" Else If x = 0 Then _
70
Verzweigungen
lblAnz3.Text = "Null" Else lblAnz3.Text = "Negativ"
End Sub
2
Private Sub cmdAnzeige4_Click(...) Handles ...
Dim x As Integer
x = -1
If x > 0 Then x = x + 1 : lblAnz4.Text =
"Positiv, x = " & x Else x = x - 1 : lblAnz4.Text =
"Negativ oder Null, x = " & x
End Sub
End 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 einzelnen Beispielen sollten Sie diesen Wert natürlich auch einmal ändern.
왘 Beim ersten Beispiel wird nur etwas angezeigt, falls die Variable x negativ 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 Verzweigung 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) voneinander getrennt sind.
In Abbildung 2.23 sehen Sie die Ausgabe nach Betätigung aller vier Buttons.
Abbildung 2.23 Einzeiliges If
71
2
2.4
Grundlagen
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 folgenden Aufbau:
If Bedingung1 Then
Anweisungen1
[ ElseIf Bedingung2
Anweisungen2 ] ...
[ Else
AnweisungenX ]
End If
Das Programm verzweigt zu den Anweisungen hinter der ersten zutreffenden 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 Form1
Private Sub cmdAnzeige_Click(...) Handles ...
Dim x, y As Integer
x = 0
y = 0
If 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
72
Verzweigungen
End Sub
End Class
2
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
Eine Verzweigung kann in bestimmten Fällen auch mit Select Case ... gebildet werden. Diese Struktur vereinfacht eine Mehrfachauswahl, wenn
nur ein Wert untersucht werden muss, und ist wie folgt aufgebaut:
Mehrfachauswahl
Select Case Testausdruck
[ Case Ausdrucksliste1
Anweisungen1 ]
[ Case Ausdrucksliste2
Anweisungen2 ] ...
[ Case Else
AnweisungenX ]
End Select
Die Struktur Select Case ... verwendet nur einen Testausdruck, der am Beginn 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.
To, Is
Bei der ersten Übereinstimmung wird der zugehörige Anweisungsblock
ausgeführt und dann wird mit der nächsten Anweisung hinter dem End Select fortgefahren.
End Select
Der optionale Anweisungsblock hinter dem Case Else wird ausgeführt, falls
vorher keine Übereinstimmung gefunden wurde. Das nachfolgende Pro-
Case Else
73
2
2.4
Grundlagen
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 Form1
Private Sub cmdAnzeige_Click(...) Handles ...
Dim x As Integer
x = 20
Select Case x
Case 1, 3, 5, 7, 9
lblAnzeige.Text = "Ungerade, Einstellig"
Case 2, 4, 6, 8
lblAnzeige.Text = "Gerade, Einstellig"
Case Is < 1, Is > 20
lblAnzeige.Text = "Kleiner 1 oder größer 20"
Case 10 To 15
lblAnzeige.Text = "Größer gleich 10 und" &
" kleiner gleich 15"
Case Else
lblAnzeige.Text = "Größer 15 und kleiner 21"
End Select
End Sub
End Class
Liefert Wert
Sowohl True-Ausdruck als auch False-Ausdruck müssen angegeben werden. Im nachfolgenden Programm im Projekt FunktionIIf wird das Maximum der beiden Zahlen x und y ermittelt und ausgegeben:
Listing 2.15 Projekt »FunktionIIf«
2.4.5 Funktion Choose
Die 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:
Wert aus Liste
Choose(Index, Ausdruck1, [Ausdruck2] ...)
Im nachfolgenden Programm im Projekt FunktionChoose wird eine Währung aus einer Liste von Währungen ausgewählt und ausgegeben:
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.
Public Class Form1
Private Sub cmdAnzeige_Click(...) Handles ...
Dim x As Integer
x = 2
lblAnzeige.Text = Choose(x, "US Dollar", "Pfund", "Euro")
End Sub
End Class
Abbildung 2.25 Auswahl mit Select ... Case
Listing 2.16 Projekt »FunktionChoose«
Die Funktion IIf() ähnelt dem einzeiligen If ... Then ... Else, liefert aber
im Unterschied zu diesem direkt einen Wert zurück. Ihre Syntax lautet:
2
Public Class Form1
Private Sub cmdAnzeige_Click(...) Handles ...
Dim x, y As Integer
x = 5
y = 3
lblAnzeige.Text = IIf(x > y, x, y)
End Sub
End Class
Listing 2.14 Projekt »SelectCase«
2.4.4 Funktion IIf
Verzweigungen
Zur Erläuterung:
왘 Der Wert x = 2 führt zur Ausgabe von Pfund.
IIf(Bedingung, True-Ausdruck, False-Ausdruck)
74
75
2
2.5
Grundlagen
unterscheiden bzw. Eigenschaften einstellen. Dazu benötigen Sie Verzweigungen, die Gegenstand des vorherigen Abschnitts waren.
2.4.6 Übungen
Übung ÜSteuerbetrag
Übung ÜSteuerbetrag
2
Schreiben Sie ein Programm, das zu einem eingegebenen Gehalt den Steuerbetrag 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
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
Übung ÜKranVerzweigung
Übung ÜKranVerzweigung
Verzweigungen und Steuerelemente
2.5.1 Kontrollkästchen
Das Kontrollkästchen (CheckBox) bietet dem Benutzer die Möglichkeit,
zwischen zwei Zuständen zu wählen, z. B. An oder Aus, wie bei einem Schalter. Sie können damit auch kennzeichnen, ob Sie eine bestimmte optionale
Erweiterung wünschen oder nicht. Der Benutzer bedient ein Kontrollkästchen, indem er ein Häkchen setzt oder entfernt.
CheckBox
Das wichtigste Ereignis ist beim Kontrollkästchen nicht der Click, sondern
das Ereignis CheckedChanged. Dieses Ereignis zeigt nicht nur an, dass der Benutzer das Kontrollkästchen bedient hat, sondern auch, dass es seinen Zustand geändert hat. Das kann beispielsweise auch durch Programmcode
geschehen. Eine Ereignisprozedur zu CheckedChanged löst in jedem Fall etwas aus, sobald das Kontrollkästchen (vom Benutzer oder vom Programmcode) geändert wird.
CheckedChanged
Allerdings wird der Programmablauf meist so gestaltet, dass bei einem anderen Ereignis der aktuelle Zustand des Kontrollkästchens (An/Aus) abgefragt und anschließend entsprechend reagiert wird.
An/Aus
Die wichtigen Eigenschaften des Kontrollkästchens sind:
왘 Checked – der Zustand der CheckBox, mit den Werten True und False
Checked
왘 Text – die Beschriftung neben dem Kontrollkästchen
Das Projekt Kontrollkästchen nutzt alle oben genannten Möglichkeiten,
siehe Abbildung 2.27.
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
Abbildung 2.27 Zustand nach Klick auf Kontrollkästchen
In diesem Abschnitt geht es um Kontrollkästchen und Optionsschaltflächen bzw. Gruppen von Optionsschaltflächen. Damit können Sie Zustände
76
77
2
2.5
Grundlagen
Der Programmcode:
Public Class Form1
Private Sub cmdPrüfen_Click(...) Handles ...
If chkSchalter.Checked Then
lblTest1.Text = "An"
Else
lblTest1.Text = "Aus"
End If
End Sub
Private Sub chkSchalter_CheckedChanged(...) _
Handles chkSchalter.CheckedChanged
If chkSchalter.Checked Then
lblTest2.Text = "An"
Else
lblTest2.Text = "Aus"
End If
End Sub
Private Sub cmdUmschalten_Click(...) Handles ...
chkSchalter.Checked = Not chkSchalter.Checked
End Sub
End Class
Listing 2.17 Projekt »Kontrollkästchen«
Zur Erläuterung:
왘 Den Zustand eines Kontrollkästchens (Häkchen gesetzt oder nicht) können Sie im Programm mithilfe einer einfachen Verzweigung auswerten.
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
78
Verzweigungen und Steuerelemente
False) abgefragt und im ersten Label ausgegeben. Es kann also sein, dass
das Kontrollkästchen vor längerer Zeit oder noch nie benutzt wurde.
2
왘 Dagegen wird die Prozedur chkSchalter_CheckedChanged() sofort aufgerufen, wenn der Benutzer das Kontrollkästchen benutzt, also ein Häkchen setzt oder entfernt. Die Prozedur wird auch dann aufgerufen, wenn
der Benutzer den Zustand des Kontrollkästchens durch Programmcode
ändert. Hier wird der Zustand des Kontrollkästchens also unmittelbar
nach der Änderung ausgegeben (im zweiten Label).
왘 Die Prozedur cmdUmschalten_Click() dient zum Umschalten des Kontrollkästchens per Programmcode. Das kommt in Windows-Anwendungen häufig vor, wenn es logische Zusammenhänge zwischen mehreren
Steuerelementen gibt. Die Eigenschaft Checked wird mithilfe des logischen Operators Not auf True bzw. auf False gesetzt. Das führt wiederum
zum Ereignis chkSchalter_CheckedChanged und dem Ablauf der zugehörigen, oben erläuterten Ereignisprozedur.
2.5.2 Optionsschaltfläche
Optionsschaltflächen (RadioButtons) treten immer in Gruppen auf und
bieten dem Benutzer die Möglichkeit, zwischen zwei oder mehr Möglichkeiten zu wählen, etwa zwischen den Farben Rot, Grün oder Blau. Bei zusammengehörigen Optionsschaltflächen kann der Benutzer genau eine
per Klick auswählen. Alle anderen werden dann unmittelbar als Nicht ausgewählt gekennzeichnet.
RadioButton
Analog zum Kontrollkästchen ist das wichtigste Ereignis bei einer Optionsschaltfläche CheckedChanged. Dieses Ereignis zeigt an, dass die betreffende
Optionsschaltfläche ihren Zustand geändert hat. Das kann auch durch Programmcode geschehen.
CheckedChanged
Der Programmablauf wird hier meist so gestaltet, dass bei einem anderen
Ereignis die aktuelle Auswahl innerhalb der Gruppe abgefragt wird und anschließend je nach Zustand unterschiedlich reagiert wird.
Es ist guter Programmierstil und verringert Folgefehler, wenn Sie eine der
Optionsschaltflächen der Gruppe bereits zur Entwicklungszeit auf True setzen. Das muss nicht notwendigerweise die erste Optionsschaltfläche der
Gruppe sein.
Die wichtigen Eigenschaften der Optionsschaltflächen sind Checked (mit
den Werten True und False) und Text (zur Beschriftung). Das nachfolgende
Checked
79
2
2.5
Grundlagen
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
Verzweigungen und Steuerelemente
Private Sub optFarbeBlau_CheckedChanged(...) Handles ...
If optFarbeBlau.Checked Then
lblAnzeige2.Text = "Blau"
End If
End Sub
2
왘 Grün gewählt hat (siehe Abbildung 2.28).
Private Sub cmdSchalter_Click(...) Handles ...
optFarbeRot.Checked = True
End Sub
End Class
Listing 2.18 Projekt »Optionen«
Zur Erläuterung:
Abbildung 2.28 Zustand nach den genannten Aktionen
Der Programmcode:
Public Class Form1
Private Sub cmdPrüfen_Click(...) Handles ...
If optFarbeRot.Checked Then
lblAnzeige1.Text = "Rot"
ElseIf optFarbeGrün.Checked Then
lblAnzeige1.Text = "Grün"
Else
lblAnzeige1.Text = "Blau"
End If
End Sub
Private Sub optFarbeRot_CheckedChanged(...) Handles ...
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
80
왘 Den Zustand einer einzelnen Optionsschaltfläche können Sie im Programm mithilfe einer einfachen Verzweigung auswerten. Es muss
festgestellt werden, ob diese Optionsschaltfläche ausgewählt oder abgewählt wurde. In beiden Fällen tritt das Ereignis CheckedChanged auf.
Auswahl oder
Abwahl
왘 Den Zustand einer Gruppe von Optionsschaltflächen können Sie im Programm mithilfe einer mehrfachen Verzweigung auswerten.
왘 Die Prozedur cmdPrüfen_Click() wird aufgerufen, wenn der Benutzer
den Button Prüfen betätigt. Erst in diesem Moment wird der Zustand
der Gruppe abgefragt und im ersten Label ausgegeben.
왘 Dagegen wird eine der Prozeduren optFarbeRot_CheckedChanged() (bzw.
... Grün ... oder ... Blau ...) sofort aufgerufen, wenn der Benutzer eine
der Optionsschaltflächen auswählt. Diese Prozeduren werden jeweils
auch dann aufgerufen, wenn der Benutzer den Zustand der zugehörigen
Optionsschaltfläche durch Programmcode ändert. Hier wird der
Zustand der Gruppe also unmittelbar nach der Änderung ausgegeben
(im zweiten Label).
왘 Die Prozedur cmdSchalter_Click() dient der Auswahl einer bestimmten
Optionsschaltfläche per Programmcode. Das kommt in WindowsAnwendungen 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.
81
2
2.5
Grundlagen
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 Optionsschaltfläche.
Verzweigungen und Steuerelemente
End If
End Sub
End Class
2
Listing 2.19 Projekt »MehrereEreignisse«
Zur Erläuterung:
2.5.3 Mehrere Ereignisse in einer Prozedur behandeln
Das folgende Projekt MehrereEreignisse stellt eine häufig verwendete Technik 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 Ereignisprozedur mehrere Ereignisse genannt werden können. Das nachfolgende 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 Form1
Private Sub optFarbeRot_CheckedChanged(...) _
Handles optFarbeRot.CheckedChanged,
optFarbeGrün.CheckedChanged,
optFarbeBlau.CheckedChanged
If optFarbeRot.Checked Then
lblAnzeige.Text = "Rot"
ElseIf optFarbeGrün.Checked Then
lblAnzeige.Text = "Grün"
Else
lblAnzeige.Text = "Blau"
82
왘 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 hinzugefügt werden, gilt nach wie vor: Nur eine der Optionsschaltflächen ist
ausgewählt.
Benötigen Sie aber innerhalb eines Formulars mehrere voneinander unabhängige Gruppen von Optionsschaltflächen, wobei in jeder der Gruppen jeweils nur eine Optionsschaltfläche ausgewählt sein soll, müssen Sie jede
Gruppe einzeln in einen Container setzen. Ein Formular ist bereits ein Container, wir benötigen also einen weiteren Container.
Container
Als ein solcher Container kann beispielsweise das Steuerelement Gruppe
(GroupBox) dienen. Mit der Zuweisung der Eigenschaft Text der GroupBox
geben Sie eine Beschriftung an.
GroupBox
Falls eine GroupBox markiert ist, dann wird eine neu erzeugte Optionsschaltflä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 Optionsschaltflächen, die im Formular außerhalb von GroupBoxen stehen. Sie
können eine bereits erzeugte Optionsschaltfläche auch im Nachhinein ausschneiden, das Ziel markieren und sie wieder einfügen, um die Zuordnung
zu ändern.
Zuordnung
Das Projekt Optionsgruppen verwendet zwei voneinander unabhängige
Gruppen von Optionen, siehe Abbildung 2.30.
83
2
2.5
Grundlagen
Verzweigungen und Steuerelemente
AusgabeUnterkunft = "Hotel"
End If
lblAnzeige.Text = AusgabeUrlaubsort & ", " &
AusgabeUnterkunft
End Sub
End Class
2
Listing 2.20 Projekt »Optionsgruppen«
Abbildung 2.30 Zwei Gruppen von RadioButtons
Zur Erläuterung:
Der zugehörige Code:
왘 Bei einer Urlaubsbuchung können Zielort und Art der Unterkunft unabhängig voneinander gewählt werden. Es gibt also zwei Gruppen von
Optionsschaltflächen, jede in einer eigenen GroupBox.
Public Class Form1
Private AusgabeUrlaubsort As String
Private AusgabeUnterkunft As String
Private Sub optBerlin_CheckedChanged(...) _
Handles optBerlin.CheckedChanged,
optParis.CheckedChanged, optRom.CheckedChanged
' Urlaubsort
If optBerlin.Checked Then
AusgabeUrlaubsort = "Berlin"
ElseIf optParis.Checked Then
AusgabeUrlaubsort = "Paris"
Else
AusgabeUrlaubsort = "Rom"
End If
lblAnzeige.Text = AusgabeUrlaubsort & ", " &
AusgabeUnterkunft
End Sub
Private Sub optAppartement_CheckedChanged(...) _
Handles optAppartement.CheckedChanged,
optPension.CheckedChanged, optHotel.CheckedChanged
' Unterkunft
If optAppartement.Checked Then
AusgabeUnterkunft = "Appartement"
ElseIf optPension.Checked Then
AusgabeUnterkunft = "Pension"
Else
84
왘 Bei Auswahl einer der drei Optionsschaltflächen in einer Gruppe wird
jeweils die gleiche Prozedur aufgerufen. In den Prozeduren wird den
klassenweit gültigen Variablen AusgabeUrlaubsort bzw. AusgabeUnterkunft ein Wert zugewiesen und anschließend ausgegeben.
왘 Die Variablen mussten klassenweit gültig deklariert werden, damit sie in
der jeweils anderen Prozedur zur Verfügung stehen.
Übung
Erweitern Sie die Übung ÜKranVerzweigung. Die Bewegung des Krans soll
per Zeitgeber (Timer) gesteuert werden. Der Benutzer wählt zunächst über
eine Gruppe von Optionsschaltflächen aus, welche Bewegung der Kran
ausführen soll. Anschließend betätigt er den Button Start, siehe Abbildung 2.31. Die Bewegung wird so lange ausgeführt, bis der Benutzer den
Button Stop drückt oder eine Begrenzung erreicht wird.
Übung ÜKranOptionen
Abbildung 2.31 Übung ÜKranOptionen
85
2
2.5
Grundlagen
2.5.5 Prozedur ohne Ereignis, Modularisierung
Allgemeine
Prozedur
Bisher ging es nur um Prozeduren, die mit einem Ereignis zusammenhingen. Darüber hinaus können Sie aber auch unabhängige, allgemeine Prozeduren schreiben, die von anderen Stellen des Programms aus aufgerufen
werden. Diese Prozeduren können Sie direkt im Codefenster eingeben.
Nachfolgend das Programm im Projekt ProzedurOhneEreignis, es handelt
sich dabei um eine geänderte Version des Programms im Projekt Optionsgruppen:
Public Class Form1
Private AusgabeUrlaubsort As String
Private AusgabeUnterkunft As String
Private Sub optUrlaubsort_CheckedChanged(...) _
Handles optBerlin.CheckedChanged,
optParis.CheckedChanged, optRom.CheckedChanged
' Urlaubsort
If optBerlin.Checked Then
AusgabeUrlaubsort = "Berlin"
ElseIf optParis.Checked Then
AusgabeUrlaubsort = "Paris"
Else
AusgabeUrlaubsort = "Rom"
End If
Anzeigen()
End Sub
Private Sub optUnterkunft_CheckedChanged(...) _
Handles optAppartement.CheckedChanged,
optPension.CheckedChanged, optHotel.CheckedChanged
' Unterkunft
If optAppartement.Checked Then
AusgabeUnterkunft = "Appartement"
ElseIf optPension.Checked Then
AusgabeUnterkunft = "Pension"
Else
AusgabeUnterkunft = "Hotel"
End If
Verzweigungen und Steuerelemente
Anzeigen()
End Sub
2
Private Sub Anzeigen()
lblAnzeige.Text = AusgabeUrlaubsort & ", " &
AusgabeUnterkunft
End Sub
End Class
Listing 2.21 Projekt »ProzedurOhneEreignis«
Zur Erläuterung:
왘 Abgebildet wird nur der zweite Teil der Klasse.
왘 Am Ende der beiden Ereignisprozeduren optUnterkunft_CheckedChanged() und optUrlaubsort_CheckedChanged() steht jeweils die Anweisung
Anzeigen(). Dabei handelt es sich um einen Aufruf der Prozedur Anzeigen().
왘 Diese Prozedur steht weiter unten. Sie ist nicht direkt an ein Ereignis
gekoppelt.
Vorteil dieser Vorgehensweise: Gemeinsam genutzte Programmteile können ausgelagert werden und müssen nur einmal geschrieben werden. Man
nennt diesen Vorgang bei der Programmierung auch Modularisierung. In
Abschnitt 4.7 wird dieses Thema noch genauer behandelt.
2.5.6 Schieberegler
Das Steuerelement Schieberegler (engl.: Trackbar) dient zur komfortablen
Einstellung eines Zahlenwerts. Im nachfolgenden Projekt Schieberegler
werden drei dieser Steuerelemente dazu genutzt, die Hintergrundfarbe eines Panels einzustellen, siehe auch Abbildung 2.32.
Zahlenwert
einstellen
Abbildung 2.32 Farbe über Schieberegler einstellen
86
87
2
2.6
Grundlagen
ValueChanged
Das Ereignis ValueChanged eines Schiebereglers zeigt an, dass der Wert geändert wurde. In diesem Projekt führt dieses Ereignis von allen drei Schiebereglern zur selben Prozedur.
Zunächst der Code des Programms:
Public Class Form1
Private 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.Value
lblGrünWert.Text = trkGrün.Value
lblBlauWert.Text = trkBlau.Value
End Sub
Private Sub WertGeändert(sender As Object, e As EventArgs) _
Handles trkRot.ValueChanged, trkGrün.ValueChanged,
trkBlau.ValueChanged
FarbeAnzeigen()
End Sub
End Class
Schleifen
왘 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 Steuerelement ist, und der Benutzer eine der Pfeiltasten betätigt, dann wird
der Wert um den Eigenschaftswert von SmallChange verändert (hier: 8).
LargeChange,
SmallChange
왘 Die Eigenschaft TickFrequency steht für den Abstand der Markierungen
am Schieberegler (hier: 16).
TickFrequency
2
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 Bearbeitung ähnlicher Vorgänge. Es gibt die Schleifenstrukturen: Do ... Loop, For
... Next, For Each ... In ... und With.
Mithilfe der Strukturen steuern Sie die Wiederholungen eines Anweisungsblocks (die Anzahl der Schleifendurchläufe). Dabei wird der Wahrheitswert
eines Ausdrucks (der Schleifenbedingung) oder der Wert eines numerischen Ausdrucks (Wert des Schleifenzählers) benötigt.
Die Schleife For Each ... In ... wird bei Feldern oder Auflistungen (engl.:
Collections) eingesetzt. Die Anweisung With dient der Steuerung einer besonderen Schleife mit nur einem Durchlauf.
Auflistung
Listing 2.22 Projekt »Schieberegler«
Color.FromArgb()
Zur Erläuterung:
2.6.1 For ... Next
왘 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 Schieberegler ergibt die Farbe Schwarz.
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:
왘 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.
88
For Zähler = Anfang To Ende [ Step Schritt ]
[ Anweisungen ]
[ Exit For ]
[ Anweisungen ]
Next [ Zähler ]
Die 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-
Step
89
2
2.6
Grundlagen
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 durchlaufen.
왘 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 Verdeutlichung sollte nachfolgend immer Zähler stehen.
Exit For
Die Anweisung Exit For können Sie einsetzen, um die Schleife aufgrund einer 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.
Schleifen
Private Sub cmdSchleife2_Click(...) Handles ...
Dim i As Integer
lblA2.Text = ""
For i = 3 To 11 Step 2
lblA2.Text &= i & vbCrLf
Next i
End Sub
2
Private Sub cmdSchleife3_Click(...) Handles ...
Dim i As Integer
lblA3.Text = ""
For i = 7 To 3 Step -1
lblA3.Text &= i & vbCrLf
Next i
End Sub
Private Sub cmdSchleife4_Click(...) Handles ...
Dim d As Double
lblA4.Text = ""
For d = 3.5 To 7.5 Step 1.5
lblA4.Text &= d & vbCrLf
Next d
End Sub
End Class
Listing 2.23 Projekt »ForNext«
Zur Erläuterung der ersten Schleife:
Abbildung 2.33 Verschiedene For-Schleifen
Der Programmcode:
Public Class Form1
Private Sub cmdSchleife1_Click(...) Handles ...
Dim i As Integer
lblA1.Text = ""
For i = 3 To 7
lblA1.Text &= i & vbCrLf
Next i
End Sub
90
왘 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 genommen.
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 ganzzahlige Werte durchlaufen kann.
91
2
2.6
Grundlagen
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.
Schleifen
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 Formulars.
2
왘 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 {
[
[
[
Loop
While | Until } Bedingung
Anweisungen ]
Exit Do ]
Anweisungen ]
oder
Do
[
[
[
Loop
Anweisungen ]
Exit Do ]
Anweisungen ]
{ 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 Anzahl 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
92
Abbildung 2.34 Bedingungsgesteuerte Schleife
Dieser Zeitpunkt wird durch das Ereignis Load gekennzeichnet. Sie erstellen
den Rahmen dieser Ereignisprozedur, indem Sie einen Doppelklick auf einer freien Stelle des Formulars ausführen. Die zugehörige Ereignisprozedur 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.
Load, MyBase
Public Class Form1
Private Sub Form1_Load(...) Handles MyBase.Load
Randomize()
End Sub
Private Sub cmdSchleife1_Click(...) Handles ...
Dim Summe As Single
lblAnzeige.Text = ""
Summe = 0
Do While Summe < 5
Summe += Rnd()
lblAnzeige.Text &= Summe & vbCrLf
Loop
lblAnzeige.Text &= "Fertig!"
End Sub
93
2
2.6
Grundlagen
Private Sub cmdSchleife2_Click(...) Handles ...
Dim Summe As Single
lblAnzeige.Text = ""
Summe = 0
Do
Summe += Rnd()
lblAnzeige.Text &= Summe & vbCrLf
Loop While Summe < 5
lblAnzeige.Text &= "Fertig!"
End Sub
Private Sub cmdSchleife3_Click(...) Handles ...
Dim Summe As Single
lblAnzeige.Text = ""
Summe = 0
Do Until Summe >= 5
Summe += Rnd()
lblAnzeige.Text &= Summe & vbCrLf
Loop
lblAnzeige.Text &= "Fertig!"
End Sub
Private Sub cmdSchleife4_Click(...) Handles ...
Dim Summe As Single
lblAnzeige.Text = ""
Summe = 0
Do
Summe += Rnd()
lblAnzeige.Text &= Summe & vbCrLf
Loop Until Summe >= 5
lblAnzeige.Text &= "Fertig!"
End Sub
Private Sub cmdSchleife5_Click(...) Handles ...
Dim Summe As Single
lblAnzeige.Text = ""
Summe = 0
Do
Summe += Rnd()
94
Schleifen
lblAnzeige.Text &= Summe & vbCrLf
If Summe >= 5 Then Exit Do
2
Loop
lblAnzeige.Text &= "Fertig!"
End Sub
End 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 eingegangen.
왘 Der Inhalt des Labels wird von alten Ausgaben gelöscht.
왘 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 Programmierstil, da Sie auf diese Weise den Wert der Variablen zu Beginn der
Schleife sicherstellen können.
Summe berechnen
왘 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 Abbruchbedingung 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.
95
2
2.6
Grundlagen
2.6.3 Ein Würfel
Im nachfolgenden Programm, das sich ebenfalls im Projekt DoLoop befindet, wird mithilfe des Zufallsgenerators insgesamt zehnmal gewürfelt. Zunächst der Code:
Private Sub cmdWürfel_Click(...) Handles ...
Dim Wert As Integer, i As Integer = 1
lblAnzeige.Text = ""
Do
Wert = Math.Floor(Rnd() * 6) + 1
lblAnzeige.Text &= Wert & vbCrLf
i = i + 1
Loop While i <= 10
End 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.
Schleifen
verwendet. Bei einem längeren Objektnamen ist das sehr nützlich und
übersichtlich. Der Aufbau sieht wie folgt aus:
2
With Objekt
[ Anweisungen ]
End With
Ein Beispiel im Projekt WithBlock:
Public Class Form1
Private Sub cmdAnzeige_Click(...) Handles ...
With lblAnzeige
.BorderStyle = BorderStyle.Fixed3D
.BackColor = Color.Yellow
.Text = "Test"
.Location = New Point(20, 50)
End With
End 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 Position werden nacheinander gesetzt. Dabei muss zu Beginn der Anweisung 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
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
96
Anhand einer Reihe von Übungsaufgaben zu Schleifen (und Verzweigungen) werden im Folgenden einige typische Probleme der Programmierung
in Visual Basic verdeutlicht. Der visuelle Teil der Lösung enthält in der Regel nur ein einfaches Textfeld zur Eingabe, einen oder zwei Buttons zum
Durchführen der Aufgabe und ein einfaches Label zur Ausgabe.
97
2
2.6
Grundlagen
Übung ÜForNext1
Übung ÜForNext1
Übung ÜZahlenraten
For-Schleife: Schreiben Sie ein Programm mit einer einfachen Schleife, das
If ... Else: Schreiben Sie ein Programm, mit dem das Spiel Zahlenraten gespielt 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 ausgegeben werden, ob die eingegebene Zahl größer oder kleiner als die zu ratende Zahl ist, siehe Abbildung 2.38.
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.
Schleifen
Übung ÜZahlenraten
2
Abbildung 2.38 Übung ÜZahlenraten
Übung ÜSteuertabelle
For-Schleife, If ... Else oder Select Case: Erweitern Sie das Programm aus
Abbildung 2.36 Übung ÜForNext1 und 2
Ü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.
Übung
ÜSteuertabelle
Übung ÜDoLoop
Übung ÜDoLoop
Do...Loop-Schleife: Schreiben Sie ein Programm, mit dessen Hilfe eine ein-
Gehalt
Steuersatz
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.
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
Abbildung 2.37 Übung ÜDoLoop
98
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 Werten in einer eigenen Zeile ausgegeben werden, siehe Abbildung 2.39. Auch
hier wird davon ausgegangen, dass das gesamte Gehalt zum angegebenen
Satz versteuert wird.
99
2
2.7
Grundlagen
Schleifen und Steuerelemente
Items. Diese wird am sinnvollsten zum Zeitpunkt des Ladens des Formulars
genutzt.
2
Im nachfolgenden Programm im Projekt ListenfeldFüllen wird ein Listenfeld für italienische Speisen zu Beginn des Programms mit den folgenden
Werten gefüllt: Spaghetti, Grüne Nudeln, Tortellini, Pizza, Lasagne, siehe Abbildung 2.40.
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 mehrfache 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
Items
Ein Listenfeld (ListBox) zeigt eine Liste mit Einträgen an, aus denen der Benutzer 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.
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.
Abbildung 2.40 Listenfeld mit Scrollbalken
Der zugehörige Code:
Public Class Form1
Private 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 Sub
End 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 hinzugefügt. Lasagne steht anschließend ganz unten.
2.7.2 Listenfeld füllen
Items.Add()
100
Bisher wurden die Eigenschaften und Ereignisse von Steuerelementen behandelt. 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
2.7.3 Wichtige Eigenschaften
Die folgenden Eigenschaften eines Listenfelds bzw. der Auflistung Items
werden in der Praxis häufig benötigt:
101
2
2.7
Grundlagen
왘 Items.Count gibt die Anzahl der Elemente in der Liste an.
SelectedItem
왘 SelectedItem beinhaltet das aktuell vom Benutzer ausgewählte Element der Liste. Falls kein Element ausgewählt wird, ergibt SelectedItem
nichts.
왘 SelectedIndex gibt die laufende Nummer des aktuell vom Benutzer ausgewählten Elements an, beginnend bei 0 für das oberste Element. Falls
kein Element ausgewählt wird, ergibt SelectedIndex den Wert -1.
Items(i)
Schleifen und Steuerelemente
왘 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.
2
왘 Die einzelnen Elemente werden mit lstSpeisen.Items(i) angesprochen.
Die Variable i beinhaltet bei der Schleife die aktuelle laufende Nummer.
왘 Über Items (Index) können Sie die einzelnen Elemente ansprechen, das
oberste Element ist Items(0).
Das folgende Programm im Projekt ListenfeldEigenschaften veranschaulicht 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.Count
lblAnzeige2.Text = "Ausgewählter Eintrag: " &
lstSpeisen.SelectedItem
lblAnzeige3.Text = "Nummer des ausgewählten" &
" Eintrags: " & lstSpeisen.SelectedIndex
Abbildung 2.41 Anzeige nach Auswahl eines Elements
2.7.4 For Each … In …
lblAnzeige4.Text = "Alle Einträge:" & vbCrLf
For i = 0 To lstSpeisen.Items.Count - 1
lblAnzeige4.Text &= lstSpeisen.Items(i) & vbCrLf
Next i
End Sub
End Class
Listing 2.28 Projekt »ListenfeldEigenschaften«
Zur Erläuterung:
왘 Das Listenfeld ist bereits gefüllt, siehe Projekt ListenfeldFüllen.
102
Zur Ausgabe der Elemente einer Auflistung eignet sich auch die For-EachSchleife. Nach Betätigung des Buttons For Each im Projekt ListenfeldEigenschaften (siehe Abbildung 2.41) wird die folgende Prozedur durchlaufen:
Schleife
Private Sub cmdForEach_Click(...) Handles ...
lblAnzeige4.Text = "Alle Einträge:" & vbCrLf
For Each s As String In lstSpeisen.Items
lblAnzeige4.Text &= s & vbCrLf
Next s
End Sub
왘 Die Anzahl der Elemente wird über lstSpeisen.Items.Count ausgegeben,
in diesem Fall sind es 5.
Listing 2.29 For-Each-Schleife
왘 Der ausgewählte Eintrag steht in lstSpeisen.SelectedItem, seine Nummer in lstSpeisen.SelectedIndex.
Den Kopf einer For-Each-Schleife verstehen Sie am besten, wenn Sie ihn
dem Sinn nach übersetzen: Durchlaufe jedes Element der Auflistung lst-
103
2
2.7
Grundlagen
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 hinzugefü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.
Schleifen und Steuerelemente
End Sub
2
Private Sub lstSpeisen_SelectedIndexChanged(...) _
Handles lstSpeisen.SelectedIndexChanged
lblAnzeige.Text = lstSpeisen.SelectedItem
End Sub
End Class
Listing 2.30 Projekt »ListenfeldEreignis«
SelectedIndexChanged
2.7.5 Wechsel der Auswahl
Zur Erläuterung:
Ä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 Ereignisprozedur zu SelectedIndexChanged() wird in jedem Fall durchlaufen, sobald die
ListBox (vom Benutzer oder vom Programmcode) geändert wird.
왘 Das Listenfeld ist bereits gefüllt, siehe Projekt ListenfeldFüllen.
Allerdings wird der Programmablauf meist so gestaltet, dass bei einem anderen 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.
왘 In der Ereignisprozedur cmdEreignis_Click() wird die Nummer des ausgewählten Elements auf 3 gesetzt. Dadurch wird in der ListBox Pizza ausgewählt. Im Label wird die geänderte Auswahl sofort angezeigt, da das
Ereignis lstSpeisen_SelectedIndexChanged ausgelöst wurde.
왘 In der dazugehörigen Ereignisprozedur lstSpeisen_SelectedIndexChanged() 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 Programmcode auslösen.
2.7.6 Wichtige Methoden
Die Methoden Insert() und RemoveAt() können Sie zur Veränderung der
Inhalte des Listenfelds nutzen:
Abbildung 2.42 Anzeige nach dem Ereignis
Der Programmcode:
왘 Mithilfe der Methode Insert() können Sie Elemente zum Listenfeld an
einer gewünschten Stelle hinzufügen.
Insert()
왘 Die Methode RemoveAt() löscht ein Element an der gewünschten Stelle.
RemoveAt()
Im nachfolgenden Programm im Projekt ListenfeldMethoden werden die
beiden Methoden eingesetzt, um ein Listenfeld zu verwalten, siehe Abbildung 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.
Public Class Form1
[...]
Private Sub cmdEreignis_Click(...) Handles ...
lstSpeisen.SelectedIndex = 3
104
105
2
2.7
Grundlagen
Schleifen und Steuerelemente
Private Sub cmdErsetzen_Click(...) Handles ...
Dim X As Integer
If txtErsetzen.Text <> "" And
lstSpeisen.SelectedIndex <> -1 Then
X = lstSpeisen.SelectedIndex
lstSpeisen.Items.RemoveAt(X)
lstSpeisen.Items.Insert(X, txtErsetzen.Text)
txtErsetzen.Text = ""
End If
End Sub
Abbildung 2.43 Verwaltung eines Listenfelds
Public Class Form1
[...]
Private Sub cmdLöschen_Click(...) Handles ...
Dim X As Integer
X = lstSpeisen.SelectedIndex
If X <> -1 Then
lstSpeisen.Items.RemoveAt(X)
End If
End Sub
Private Sub cmdEinfügen_Click(...) Handles ...
If txtNeu.Text = "" Then
Exit Sub
End If
If optAnfang.Checked Then
lstSpeisen.Items.Insert(0, txtNeu.Text)
ElseIf optAuswahl.Checked And
lstSpeisen.SelectedIndex <> -1 Then
lstSpeisen.Items.Insert(
lstSpeisen.SelectedIndex, txtNeu.Text)
Else
lstSpeisen.Items.Add(txtNeu.Text)
End If
txtNeu.Text = ""
End Sub
106
2
Private Sub cmdAllesLöschen_Click(...) Handles ...
lstSpeisen.Items.Clear()
End Sub
End 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 Element 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 TextBox 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.
107
2
2.7
Grundlagen
왘 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
Schleifen und Steuerelemente
Verhalten der Eigenschaft Items. Das nachfolgende Programm im Projekt
ListenfeldMehrfachauswahl verdeutlicht das, siehe auch Abbildung 2.45.
2
– 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() eingefü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
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 & vbCrLf
Next s
End Sub
End Class
Listing 2.32 Projekt »ListenfeldMehrfachauswahl«
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-Programmen kennt. Dazu wird zur Entwicklungszeit die Eigenschaft SelectionMode auf den Wert MultiExtended gesetzt. Der Benutzer kann
anschließend mithilfe der (Strg)-Taste mehrere einzelne Elemente auswählen oder mithilfe der (ª)-Taste (wie für Großbuchstaben) einen zusammenhä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
108
Die Eigenschaften SelectedIndices und SelectedItems beinhalten die Nummern bzw. die Einträge der ausgewählten Elemente. Sie ähneln in ihrem
Zur Erläuterung:
왘 Das Listenfeld ist bereits gefüllt, siehe Projekt ListenfeldFüllen.
왘 In der Prozedur cmdAnzeigen_Click() werden alle ausgewählten Elemente 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 Eintrag aus dem Listenfeldbereich auswählen oder im Textfeldbereich eingeben. Das Kombinationsfeld hat im Wesentlichen die Eigenschaften und
Methoden des Listenfelds.
109
2
2.7
Grundlagen
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 Kombinationsfeld hat die Größe einer TextBox.
Schleifen und Steuerelemente
lblAnzeige3.Text = cmbWerkzeug3.Text
End Sub
End Class
2
Listing 2.33 Projekt »Kombinationsfeld«
왘 DropDownList: Die Auswahl ist begrenzt auf die Einträge der aufklappbaren Liste, also ohne eigene Eingabemöglichkeit. Dieser Typ Kombinationsfeld 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 Bildlaufleiste 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 Form1
Private 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
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 Programm kann es genauso wie das erste Kombinationsfeld behandelt
werden. Die Eigenschaft Text beinhaltet also immer den Wert des Kombinationsfelds.
Übung
Private Sub cmdAnzeigen2_Click(...) Handles ...
lblAnzeige2.Text = cmbWerkzeug2.SelectedItem
End Sub
Private Sub cmdAnzeigen3_Click(...) Handles ...
110
Schreiben Sie ein Programm, das zwei Listenfelder beinhaltet, in denen jeweils 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
Übung ÜListenfeld
111
2
Grundlagen
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 Eigenschaft SelectedIndices genutzt werden. Eine solche Auflistung beinhaltet 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.
112
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ösungsmö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 Form1
Private Sub cmdMyName_Click(sender As Object,
e As EventArgs) Handles cmdMyName.Click
lblMyName.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 Form1
Private Sub cmdAnzeigen_Click(...) Handles ...
Dim nachname, vorname As String
Dim strasse, plz, ort As String
Dim alter As Integer
Dim geburtsdatum As Date
517
B
B.2 Lösungen der Übungsaufgaben aus Kapitel 2
Lösungen der Übungsaufgaben
B.2.3 Lösung ÜRechenoperatoren
nachname = "Basic"
vorname = "Bodo"
strasse = "Bergstraße 34"
plz = "09445"
ort = "Brunnstadt"
alter = 27
geburtsdatum = "18.05.1988"
lblA.Text = "Adresse: " & vbCrLf & vorname & " " &
nachname & vbCrLf & strasse & vbCrLf & plz & " " &
ort & vbCrLf & vbCrLf & "geb.: " & geburtsdatum &
vbCrLf & "Alter: " & alter
End Sub
End Class
B.2.2 Lösung ÜGültigkeitsbereich
Public Class Form1
Private x As Double
Private Sub cmdAnzeigen1_Click(...) Handles ...
Dim y As Double
y = y + 0.1
x = x + 0.1
lblA.Text = "x: " & x & vbCrLf & "y: " & y
End Sub
Private Sub cmdAnzeigen2_Click(...) Handles ...
Dim z As Double
z = z + 0.1
x = x + 0.1
lblA.Text = "x: " & x & vbCrLf & "z: " & z
End Sub
End Class
518
Public Class Form1
Private Sub cmdAnzeigen1_Click(...) Handles ...
Dim x As Double
x = 3 * -2.5 + 4 * 2
lblA.Text = x
End Sub
Private Sub cmdAnzeigen2_Click(...) Handles ...
Dim x As Double
x = 3 * (-2.5 + 4) * 2
lblA.Text = x
End Sub
End Class
B.2.4 Lösung ÜVergleichsoperatoren
Public Class Form1
Private Sub cmdAnzeigen1_Click(...) Handles ...
Dim p As Boolean
p = 12 - 3 >= 4 * 2.5
lblA.Text = p
End Sub
Private Sub cmdAnzeigen2_Click(...) Handles ...
Dim p As Boolean
p = "Maier" Like "M??er"
lblA.Text = p
End Sub
End Class
B.2.5 Lösung ÜLogischeOperatoren
Public Class Form1
Private Sub cmdAnzeigen1_Click(...) Handles ...
Dim p As Boolean
p = 4 > 3 And -4 > -3
lblA.Text = p
End Sub
519
B
B.2 Lösungen der Übungsaufgaben aus Kapitel 2
Lösungen der Übungsaufgaben
Public Class Form1
Private Sub cmdHakenAus_Click(...) Handles ...
h.Height = h.Height + 10
End Sub
Private Sub cmdAnzeigen2_Click(...) Handles ...
Dim p As Boolean
p = 4 > 3 Or -4 > -3
lblA.Text = p
End Sub
End Class
Private Sub cmdHakenEin_Click(...) Handles ...
h.Height = h.Height - 10
End Sub
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 Form1
Private Sub cmdStart_Click(...) Handles ...
tim1.Enabled = True
End Sub
Private Sub tim1_Tick(...) Handles tim1.Tick
pan1.Location = New Point(pan1.Location.X
pan1.Location.Y
pan2.Location = New Point(pan2.Location.X
pan2.Location.Y
pan3.Location = New Point(pan3.Location.X
pan3.Location.Y
pan4.Location = New Point(pan4.Location.X
pan4.Location.Y
End Sub
End Class
B.2.8 Lösung ÜKran
Bezeichnungen:
왘 f: Fundament
왘 s: senkrechtes Hauptelement
왘 a: waagerechter Ausleger
왘 h: senkrechter Haken am Ausleger
520
Private Sub cmdAuslegerAus_Click(...) Handles ...
a.Width = a.Width + 10
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 cmdAuslegerEin_Click(...) Handles ...
a.Width = a.Width - 10
a.Location = New Point(a.Location.X + 10, a.Location.Y)
h.Location = New Point(h.Location.X + 10, h.Location.Y)
End Sub
+
+
+
+
5,
5)
5,
5)
5,
5)
5,
5)
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 + 10
s.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)
521
B
B.2 Lösungen der Übungsaufgaben aus Kapitel 2
Lösungen der Übungsaufgaben
End Sub
Private Sub cmdKranEin_Click(...) Handles ...
s.Height = s.Height - 10
s.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 Sub
End Class
Case Is <= 30000
steuersatz = 20
Case Else
steuersatz = 25
End Select
steuerbetrag = gehalt * steuersatz / 100
lblSteuerbetrag.Text = steuerbetrag
End Sub
End Class
B.2.9 Lösung ÜSteuerbetrag, zwei Möglichkeiten
Public Class Form1
Private Sub cmdBerechnen1_Click(...) Handles ...
Dim gehalt, steuersatz, steuerbetrag As Double
gehalt = Convert.ToDouble(txtGehalt.Text)
If gehalt <= 12000 Then
steuersatz = 12
ElseIf gehalt <= 20000 Then
steuersatz = 15
ElseIf gehalt <= 30000 Then
steuersatz = 20
Else
steuersatz = 25
End If
steuerbetrag = gehalt * steuersatz / 100
lblSteuerbetrag.Text = steuerbetrag
End Sub
Private Sub cmdBerechnen2_Click(...) Handles ...
Dim gehalt, steuersatz, steuerbetrag As Double
gehalt = Convert.ToDouble(txtGehalt.Text)
Select Case gehalt
Case Is <= 12000
steuersatz = 12
Case Is <= 20000
steuersatz = 15
522
B.2.10 Lösung ÜKranVerzweigung
Bezeichnungen:
왘 f: Fundament
왘 s: senkrechtes Hauptelement
왘 a: waagerechter Ausleger
왘 h: senkrechter Haken am Ausleger
Public Class Form1
Private Sub cmdHakenAus_Click(...) Handles ...
If h.Location.Y + h.Height + 5 < f.Location.Y Then
h.Height = h.Height + 10
End If
End Sub
Private Sub cmdHakenEin_Click(...) Handles ...
If h.Height > 15 Then
h.Height = h.Height - 10
End If
End Sub
Private Sub cmdAuslegerAus_Click(...) Handles ...
If a.Location.X > 15 Then
a.Width = a.Width + 10
a.Location = New Point(a.Location.X - 10, a.Location.Y)
h.Location = New Point(h.Location.X - 10, h.Location.Y)
End If
End Sub
523
B
B.2 Lösungen der Übungsaufgaben aus Kapitel 2
Lösungen der Übungsaufgaben
Private Sub cmdAuslegerEin_Click(...) Handles ...
If a.Width > 30 Then
a.Width = a.Width - 10
a.Location = New Point(a.Location.X + 10, a.Location.Y)
h.Location = New Point(h.Location.X + 10, h.Location.Y)
End If
End Sub
h.Location = New Point(h.Location.X, h.Location.Y + 10)
End If
End Sub
End Class
B.2.11 Lösung ÜKranOptionen
Bezeichnungen:
Private Sub cmdKranRechts_Click(...) Handles ...
If f.Location.X < 215 Then
f.Location = New Point(f.Location.X + 10,
s.Location = New Point(s.Location.X + 10,
a.Location = New Point(a.Location.X + 10,
h.Location = New Point(h.Location.X + 10,
End If
End Sub
Private Sub cmdKranLinks_Click(...) Handles
If f.Location.X > 15 And a.Location.X >
f.Location = New Point(f.Location.X
s.Location = New Point(s.Location.X
a.Location = New Point(a.Location.X
h.Location = New Point(h.Location.X
End If
End Sub
왘 f: Fundament
f.Location.Y)
s.Location.Y)
a.Location.Y)
h.Location.Y)
...
15 Then
- 10, f.Location.Y)
- 10, s.Location.Y)
- 10, a.Location.Y)
- 10, h.Location.Y)
Private Sub cmdKranAus_Click(...) Handles ...
If s.Location.Y > 15 Then
s.Height = s.Height + 10
s.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 If
End Sub
Private Sub cmdKranEin_Click(...) Handles ...
If h.Location.Y + h.Height + 5 < f.Location.Y Then
s.Height = s.Height - 10
s.Location = New Point(s.Location.X, s.Location.Y + 10)
a.Location = New Point(a.Location.X, a.Location.Y + 10)
524
왘 s: senkrechtes Hauptelement
왘 a: waagerechter Ausleger
왘 h: senkrechter Haken am Ausleger
Public Class Form1
Private Sub cmdStart_Click(...) Handles ...
tim1.Enabled = True
End Sub
Private Sub cmdStop_Click(...) Handles ...
tim1.Enabled = False
End Sub
Private Sub tim1_Tick(...) Handles tim1.Tick
If optHakenAus.Checked Then
If h.Location.Y + h.Height + 5 < f.Location.Y Then
h.Height = h.Height + 10
Else
tim1.Enabled = False
End If
ElseIf optHakenEin.Checked Then
If h.Height > 15 Then
h.Height = h.Height - 10
Else
tim1.Enabled = False
End If
ElseIf optAuslegerAus.Checked Then
If a.Location.X > 15 Then
a.Width = a.Width + 10
a.Location = New Point(a.Location.X - 10,
a.Location.Y)
525
B
h.Location = New Point(h.Location.X - 10,
h.Location.Y)
Else
tim1.Enabled = False
End If
ElseIf optAuslegerEin.Checked Then
If a.Width > 25 Then
a.Width = a.Width - 10
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
End If
ElseIf optKranRechts.Checked Then
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)
Else
tim1.Enabled = False
End If
ElseIf optKranLinks.Checked Then
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)
Else
tim1.Enabled = False
526
B.2 Lösungen der Übungsaufgaben aus Kapitel 2
Lösungen der Übungsaufgaben
End If
ElseIf optKranAus.Checked Then
If s.Location.Y > 15 Then
s.Height = s.Height + 10
s.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 = False
End If
ElseIf optKranEin.Checked Then
If h.Location.Y + h.Height + 5 < f.Location.Y Then
s.Height = s.Height - 10
s.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 = False
End If
End If
End Sub
End Class
B.2.12 Lösung ÜForNext1
Public Class Form1
Private Sub cmdAnzeigen_Click(...) Handles ...
Dim d As Double
lblA.Text = ""
For d = 35 To 20 Step -2.5
lblA.Text &= d & vbCrLf
Next d
End Sub
End Class
527
B
B.2.13 Lösung ÜForNext2
B.2.15 Lösung ÜZahlenraten
Public Class Form1
Private Sub cmdAnzeigen_Click(...) Handles ...
Dim d, summe, zähler, mittelwert As Double
Public Class Form1
Private zahl As Integer
summe = 0
zähler = 0
lblA.Text = ""
For d = 35 To 20 Step -2.5
lblA.Text &= d & vbCrLf
summe += d
zähler += 1
Next d
mittelwert = summe / zähler
lblA.Text &= vbCrLf & "Summe: " & summe & vbCrLf &
"Mittelwert: " & mittelwert & vbCrLf
End Sub
End Class
B.2.14 Lösung ÜDoLoop
Public Class Form1
Private Sub cmdHalbieren_Click(...) Handles ...
Dim d As Double
d = Convert.ToDouble(txtEingabe.Text)
lblA.Text = ""
Do While d > 0.001
d = d / 2
lblA.Text &= d & vbCrLf
Loop
End Sub
End Class
528
B.2 Lösungen der Übungsaufgaben aus Kapitel 2
Lösungen der Übungsaufgaben
Private Sub cmdPrüfen_Click(...) Handles ...
Dim eingabe As Integer
eingabe = Convert.ToInt32(txtEingabe.Text)
If eingabe > zahl Then
lblA.Text = "Die Zahl " & eingabe & " ist zu groß"
ElseIf eingabe < zahl Then
lblA.Text = "Die Zahl " & eingabe & " ist zu klein"
Else
lblA.Text = "Die Zahl " & eingabe & " stimmt"
End If
End Sub
Private Sub Form1_Load(...) Handles MyBase.Load
Randomize()
zahl = Math.Floor(Rnd() * 100) + 1
End Sub
End Class
B.2.16 Lösung ÜSteuertabelle
Public Class Form1
Private Sub cmdAnzeigen_Click(...) Handles ...
Dim gehalt As Double
Dim steuersatz As Double
Dim steuerbetrag As Double
Dim netto As Double
lblA.Text = ""
For gehalt = 5000 To 35000 Step 3000
If gehalt <= 12000 Then
steuersatz = 12
ElseIf gehalt <= 20000 Then
steuersatz = 15
ElseIf gehalt <= 30000 Then
steuersatz = 20
529
B
B.3 Lösungen der Übungsaufgaben aus Kapitel 4
Lösungen der Übungsaufgaben
Else
steuersatz = 25
End If
steuerbetrag = gehalt * steuersatz / 100
netto = gehalt - steuerbetrag
lblA.Text &= gehalt & " €, " & steuersatz & " %, " &
steuerbetrag & " €, " & netto & " €" & vbCrLf
Next gehalt
End Sub
End Class
B.2.17 Lösung ÜListenfeld
Public Class Form1
Private 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 Integer
For i = lstLinks.SelectedItems.Count - 1 To 0 Step -1
lstLinks.Items.RemoveAt(lstLinks.SelectedIndices(i))
Next i
End Sub
530
Private Sub cmdLinks_Click(...) Handles ...
For Each s As String In lstRechts.SelectedItems
lstLinks.Items.Add(s)
Next s
Dim i As Integer
For i = lstRechts.SelectedItems.Count - 1 To 0 Step -1
lstRechts.Items.RemoveAt(lstRechts.SelectedIndices(i))
Next i
End Sub
End Class
B.3 Lösungen der Übungsaufgaben aus Kapitel 4
B.3.1 Lösung ÜEnabled
Public Class Form1
Private 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 Then
cmdLöschen.Enabled = True
Else
cmdLöschen.Enabled = False
End If
End Sub
Private Sub cmdLöschen_Click(...) Handles ...
lstLand.Items.RemoveAt(lstLand.SelectedIndex)
End Sub
End Class
531
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
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
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.4.10
1.4.11
1.4.12
Arbeiten mit dem Eigenschaften-Fenster ........................................................
Speichern eines Projekts ........................................................................................
Das Codefenster ........................................................................................................
Schreiben von Programmcode .............................................................................
Kommentare ..............................................................................................................
Starten, Ausführen und Beenden des Programms ........................................
Ausführbares Programm .......................................................................................
Projekt schließen, Projekt öffnen ........................................................................
Übung ...........................................................................................................................
Regeln für Zeilenumbrüche ..................................................................................
22
25
25
27
29
29
30
30
31
31
1.5
Arbeiten mit Steuerelementen .........................................................................................
32
1.5.1
1.5.2
Steuerelemente formatieren ................................................................................
Steuerelemente kopieren ......................................................................................
32
34
1.5.3
1.5.4
1.5.5
1.5.6
Eigenschaften zur Laufzeit ändern .....................................................................
Vergabe und Verwendung von Namen ............................................................
Verknüpfung von Texten, mehrzeilige Texte ..................................................
Eigenschaft BackColor, Farben allgemein ........................................................
34
37
37
38
2
Grundlagen
41
2.1
Variablen und Datentypen ..................................................................................................
41
2.1.1
2.1.2
2.1.3
41
42
42
Namen und Werte ...................................................................................................
Deklarationen ............................................................................................................
Datentypen .................................................................................................................
5
Inhalt
Inhalt
2.1.4
2.1.5
2.1.6
2.2
2.3
2.4
2.5
2.6
2.7
Gültigkeitsbereich ....................................................................................................
Konstanten .................................................................................................................
Enumerationen .........................................................................................................
45
48
50
Operatoren .................................................................................................................................
51
2.2.1
2.2.2
2.2.3
2.2.4
2.2.5
2.2.6
Rechenoperatoren ...................................................................................................
Vergleichsoperatoren .............................................................................................
Logische Operatoren ...............................................................................................
Verkettungsoperator ..............................................................................................
Zuweisungsoperatoren ..........................................................................................
Rangfolge der Operatoren ....................................................................................
52
54
55
56
57
57
Einfache Steuerelemente ....................................................................................................
59
2.3.1
2.3.2
2.3.3
2.3.4
Panel .............................................................................................................................
Zeitgeber .....................................................................................................................
Textfelder ....................................................................................................................
Zahlenauswahlfeld ..................................................................................................
59
61
64
68
Verzweigungen ........................................................................................................................
69
2.4.1
2.4.2
2.4.3
2.4.4
2.4.5
Einzeiliges If ... Then ... Else ....................................................................................
If...Then...Else-Block .................................................................................................
Select Case ..................................................................................................................
Funktion IIf .................................................................................................................
Funktion Choose .......................................................................................................
70
72
73
74
75
2.4.6
Übungen .....................................................................................................................
76
Verzweigungen und Steuerelemente ............................................................................
76
2.5.1
2.5.2
2.5.3
2.5.4
2.5.5
2.5.6
Kontrollkästchen ......................................................................................................
Optionsschaltfläche ................................................................................................
Mehrere Ereignisse in einer Prozedur behandeln .........................................
Mehrere Gruppen von Optionsschaltflächen .................................................
Prozedur ohne Ereignis, Modularisierung .......................................................
Schieberegler .............................................................................................................
77
79
82
83
86
87
Schleifen ......................................................................................................................................
89
2.6.1
2.6.2
2.6.3
2.6.4
2.6.5
89
92
96
96
97
Schleifen und Steuerelemente .......................................................................................... 100
2.7.1
6
For ... Next ...................................................................................................................
Do ... Loop ....................................................................................................................
Ein Würfel ...................................................................................................................
With ..............................................................................................................................
Übungen .....................................................................................................................
Listenfeld ....................................................................................................................
100
2.7.2
2.7.3
2.7.4
2.7.5
2.7.6
2.7.7
2.7.8
Listenfeld füllen ........................................................................................................
Wichtige Eigenschaften .........................................................................................
For Each … In … ...........................................................................................................
Wechsel der Auswahl ..............................................................................................
Wichtige Methoden .................................................................................................
Mehrfachauswahl ....................................................................................................
Kombinationsfelder .................................................................................................
100
101
103
104
105
108
109
3
Fehlerbehandlung
3.1
Entwicklung eines Programms .......................................................................................... 113
3.2
Fehlerarten ................................................................................................................................. 114
3.3
Syntaxfehler und IntelliSense ............................................................................................ 115
3.4
3.5
113
Laufzeitfehler und Exception Handling ......................................................................... 117
3.4.1
3.4.2
Programm mit Laufzeitfehlern ............................................................................ 117
Einfaches Exception Handling ............................................................................. 119
3.4.3
Erweitertes Exception Handling .......................................................................... 121
Logische Fehler und Debugging ........................................................................................ 122
3.5.1
3.5.2
Haltepunkte und Einzelschrittverfahren .......................................................... 122
Überwachungsfenster ............................................................................................ 123
4
Erweiterte Grundlagen
4.1
Steuerelemente aktivieren ................................................................................................. 125
4.1.1
4.1.2
4.2
Ereignis Enter ............................................................................................................. 125
Eigenschaften Enabled und Visible .................................................................... 128
Bedienung per Tastatur ........................................................................................................ 131
4.2.1
4.2.2
4.3
125
Eigenschaften TabIndex und TabStop .............................................................. 131
Tastenkombination für Steuerelemente .......................................................... 132
Ereignisgesteuerte Programmierung ............................................................................. 133
4.3.1
4.3.2
4.3.3
Eine Ereigniskette ..................................................................................................... 133
Endlose Ereignisketten ........................................................................................... 135
Textfelder koppeln ................................................................................................... 136
7
Inhalt
Inhalt
4.4
4.5
Mehrere Formulare ................................................................................................................
138
5.5
4.4.1
142
5.6
Allgemeine Code-Module ......................................................................................
Datenfelder ................................................................................................................................ 144
4.5.1
4.5.2
4.5.3
4.5.4
4.5.5
4.5.6
Eindimensionale Datenfelder ..............................................................................
Ein Feld durchsuchen ..............................................................................................
Weitere Feld-Operationen ....................................................................................
Mehrdimensionale Datenfelder ..........................................................................
Datenfelder initialisieren ......................................................................................
Datenfelder sind dynamisch ................................................................................
144
146
148
150
154
155
4.6
Benutzerdefinierte Datentypen ....................................................................................... 158
4.7
Prozeduren und Funktionen ............................................................................................... 161
4.8
4.7.1
4.7.2
Prozeduren .................................................................................................................
Übergabe per Referenz ...........................................................................................
162
164
4.7.3
4.7.4
4.7.5
4.7.6
4.7.7
4.7.8
Funktionen .................................................................................................................
Optionale Argumente .............................................................................................
Beliebig viele Argumente ......................................................................................
Datenfelder als Argumente ..................................................................................
Rekursiver Aufruf .....................................................................................................
Übungen zu Prozeduren und Funktionen ........................................................
167
169
171
173
175
177
Konsolenanwendung ............................................................................................................ 178
4.8.1
4.8.2
4.8.3
4.8.4
4.8.5
4.8.6
Anwendung erzeugen ............................................................................................
Ein- und Ausgabe von Text ...................................................................................
Eingabe einer Zahl ...................................................................................................
Erfolgreiche Eingabe einer Zahl ..........................................................................
Ausgabe formatieren ..............................................................................................
Aufruf von der Kommandozeile ..........................................................................
178
178
180
181
182
183
Objektorientierte Programmierung
187
5.1
Was ist Objektorientierung? ..............................................................................................
187
5.2
Klasse, Eigenschaft, Methode, Objekt ...........................................................................
188
5.2.1
191
Objektverweis und Instanz ...................................................................................
5.3
Eigenschaftsmethode ........................................................................................................... 193
5.4
Konstruktor ................................................................................................................................ 195
8
Referenzen, Vergleiche und Typen .................................................................................. 200
5.6.1
5.6.2
5.6.3
5.6.4
5.6.5
Referenzen ..................................................................................................................
Operator Is ..................................................................................................................
Objekte vergleichen .................................................................................................
Typ eines Objekts ermitteln ..................................................................................
Typ eines Objekts durch Vergleich ermitteln ..................................................
200
201
202
204
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
5.13.2
5.13.3
5.14
6
Eine Liste von Zeichenketten ................................................................................ 225
Eine Liste von Objekten .......................................................................................... 228
Ein Dictionary von Objekten ................................................................................. 232
Eigene Klassenbibliotheken ................................................................................................ 235
5.14.1
5.14.2
6.1
5
Namensräume .......................................................................................................................... 198
DLL erstellen ............................................................................................................... 235
DLL nutzen .................................................................................................................. 237
Wichtige Klassen in .NET
239
Klasse String für Zeichenketten ........................................................................................ 239
6.1.1
6.1.2
Eigenschaften der Klasse String .......................................................................... 240
Trimmen ...................................................................................................................... 242
6.1.3
6.1.4
6.1.5
6.1.6
6.1.7
6.1.8
6.1.9
Splitten .........................................................................................................................
Suchen ..........................................................................................................................
Einfügen ......................................................................................................................
Löschen ........................................................................................................................
Teilzeichenkette ermitteln ....................................................................................
Zeichen ersetzen .......................................................................................................
Ausgabe formatieren ..............................................................................................
243
245
248
250
251
253
254
9
Inhalt
Inhalt
6.2
6.2.1
6.2.2
6.2.3
6.3
6.4
7.1.5
7.1.6
Datum und Uhrzeit ................................................................................................................. 256
Eigenschaften von DateTime ...............................................................................
Rechnen mit Datum und Uhrzeit .......................................................................
DateTimePicker .........................................................................................................
256
259
261
Dateien und Verzeichnisse ..................................................................................................
264
6.3.1
6.3.2
6.3.3
6.3.4
6.3.5
6.3.6
6.3.7
6.3.8
6.3.9
6.3.10
6.3.11
Lesen aus einer Textdatei ......................................................................................
Schreiben in eine Textdatei ..................................................................................
Sicheres Lesen aus einer Textdatei ....................................................................
Sicheres Schreiben in eine Textdatei .................................................................
Datei mit wahlfreiem Zugriff ...............................................................................
Die Klassen File und Directory .............................................................................
Das aktuelle Verzeichnis ........................................................................................
Eine Liste der Dateien .............................................................................................
Eine Liste der Dateien und Verzeichnisse ........................................................
Informationen über Dateien und Verzeichnisse ...........................................
Bewegen in der Verzeichnishierarchie ..............................................................
265
267
268
271
272
279
280
281
282
283
284
XML-Dateien .............................................................................................................................
286
6.4.1
6.4.2
6.4.3
6.4.4
6.4.5
286
288
289
291
293
Aufbau von XML-Dateien ......................................................................................
Schreiben in eine XML-Datei ................................................................................
Lesen aus einer XML-Datei ....................................................................................
Schreiben von Objekten .........................................................................................
Lesen von Objekten .................................................................................................
7.2
Kontextmenü ............................................................................................................................ 320
7.2.1
7.2.2
7.3
Erstellung des Kontextmenüs .............................................................................. 320
Code des Kontextmenüs ........................................................................................ 321
Symbolleiste .............................................................................................................................. 322
7.3.1
7.3.2
7.4
Schriftgröße ................................................................................................................ 318
Schriftstil ..................................................................................................................... 319
Erstellung der Symbolleiste .................................................................................. 323
Code der Symbolleiste ............................................................................................ 324
Statusleiste ................................................................................................................................. 327
7.4.1
7.4.2
Erstellung der Statusleiste .................................................................................... 327
Code der Statusleiste .............................................................................................. 328
7.5
Eingabe-Dialogfeld ................................................................................................................. 329
7.6
Ausgabe-Dialogfeld ................................................................................................................ 333
7.7
Standarddialogfelder ............................................................................................................. 339
7.7.1
7.7.2
7.7.3
7.7.4
7.7.5
Datei öffnen ...............................................................................................................
Datei speichern unter .............................................................................................
Verzeichnis auswählen ...........................................................................................
Farbe auswählen ......................................................................................................
Schrifteigenschaften auswählen ........................................................................
339
341
343
344
345
7.8
Steuerelement ListView ....................................................................................................... 347
6.5
Rechnen mit der Klasse Math ............................................................................................ 295
7.9
Steuerelement Chart .............................................................................................................. 350
6.6
Zugriff auf MS Office .............................................................................................................
300
7.10
Steuerelement DataGridView ........................................................................................... 355
6.6.1
6.6.2
6.6.3
6.6.4
302
305
306
308
7.11
Lokalisierung ............................................................................................................................. 360
8
Datenbankanwendungen mit ADO.NET
MS Word-Datei erstellen .......................................................................................
MS Word-Datei lesen ..............................................................................................
MS Excel-Datei erstellen ........................................................................................
MS Excel-Datei lesen ...............................................................................................
8.1
7
Weitere Elemente eines Windows-Programms
7.1
Hauptmenü ................................................................................................................................ 311
7.1.1
7.1.2
7.1.3
7.1.4
10
Erstellung des Hauptmenüs .................................................................................
Code des Hauptmenüs ...........................................................................................
Klasse Font .................................................................................................................
Schriftart .....................................................................................................................
311
311
313
316
316
Was sind relationale Datenbanken? ............................................................................... 365
8.1.1
8.1.2
8.1.3
8.1.4
8.2
365
Beispiel »Lager« .........................................................................................................
Indizes ..........................................................................................................................
Relationen ...................................................................................................................
Übungen ......................................................................................................................
366
369
370
375
Anlegen einer Datenbank in MS Access ........................................................................ 376
8.2.1
Aufbau von MS Access ............................................................................................ 376
11
Inhalt
Inhalt
378
382
9.3
Datenbankzugriff mit Visual Basic .................................................................................. 382
9.4
Formatierung von Internetseiten ..................................................................................... 427
8.3.1
8.3.2
8.3.3
8.3.4
8.3.5
8.3.6
8.3.7
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+
10.1
Grundlagen von GDI+ ............................................................................................................ 445
10.2
Linie, Rechteck, Polygon und Ellipse zeichnen ........................................................... 445
8.2.2
8.2.3
8.3
8.4
8.6
8.7
Beispiel-Datenbank .................................................................................................
Ablauf eines Zugriffs ...............................................................................................
Verbindung ................................................................................................................
SQL-Befehl ..................................................................................................................
OleDb ...........................................................................................................................
Auswahlabfrage .......................................................................................................
Aktionsabfrage ..........................................................................................................
383
384
384
384
385
385
388
Fehlerhafte Programmierung .............................................................................. 426
390
395
395
396
396
Ein Verwaltungsprogramm ................................................................................................
398
8.5.1
8.5.2
8.5.3
8.5.4
Initialisierung ............................................................................................................
Alle Datensätze sehen ............................................................................................
Datensatz einfügen .................................................................................................
Datensatz ändern ....................................................................................................
398
399
401
403
8.5.5
Datensatz löschen ...................................................................................................
406
8.5.6
Datensatz suchen ....................................................................................................
408
10.3
Text schreiben ........................................................................................................................... 451
Abfragen über mehrere Tabellen .....................................................................................
410
10.4
Bilder darstellen ....................................................................................................................... 453
Verbindung zu MySQL ........................................................................................................... 415
10.5
Dauerhaft zeichnen ................................................................................................................ 455
10.6
Zeichnen einer Funktion ....................................................................................................... 457
11
Beispielprojekte
11.1
Spielprogramm Tetris ............................................................................................................ 461
.NET-Treiber ...............................................................................................................
415
9
Internetanwendungen mit ASP.NET
419
9.1
Grundlagen von Internetanwendungen ......................................................................
419
9.1.1
9.1.2
9.1.3
419
420
421
Statische Internetanwendungen ........................................................................
Dynamische Internetanwendungen .................................................................
Vorteile von ASP.NET ..............................................................................................
Ein lokaler Webserver ........................................................................................................... 421
9.2.1
12
9.3.1
Auswahl mit »SELECT« ...........................................................................................
Ändern mit »UPDATE« ............................................................................................
Löschen mit »DELETE« ............................................................................................
Einfügen mit »INSERT« ...........................................................................................
Typische Fehler in SQL ............................................................................................
8.7.1
9.2
Eine erste ASP.NET-Anwendung ....................................................................................... 424
SQL-Befehle ................................................................................................................................ 390
8.4.1
8.4.2
8.4.3
8.4.4
8.4.5
8.5
Datenbankentwurf in MS Access 2013 ..............................................................
Übungen .....................................................................................................................
Eine erste Internetanwendung ...........................................................................
422
10.2.1
10.2.2
10.2.3
10.2.4
10.2.5
10.2.6
11.1.1
11.1.2
11.1.3
11.1.4
11.1.5
Grundeinstellungen ................................................................................................
Linie ...............................................................................................................................
Rechteck .......................................................................................................................
Polygon ........................................................................................................................
Ellipse ............................................................................................................................
Dicke und Farbe ändern, Zeichnung löschen ..................................................
Spielablauf ..................................................................................................................
Programmbeschreibung ........................................................................................
Steuerelemente ........................................................................................................
Initialisierung des Programms .............................................................................
Erzeugen eines neuen Panels ...............................................................................
445
446
447
448
448
449
450
461
461
462
463
464
466
13
Inhalt
Inhalt
11.1.6
11.1.7
11.1.8
11.1.9
11.1.10
11.2
Der Zeitgeber .............................................................................................................
Panel löschen .............................................................................................................
Panel seitlich bewegen ...........................................................................................
Panel nach unten bewegen ..................................................................................
Pause ............................................................................................................................
467
468
472
473
473
Lernprogramm Vokabeln .....................................................................................................
474
11.2.1
11.2.2
11.2.3
11.2.4
11.2.5
11.2.6
11.2.7
474
476
476
477
479
481
482
Benutzung des Programms ..................................................................................
Erweiterung des Programms ................................................................................
Initialisierung des Programms .............................................................................
Ein Test beginnt ........................................................................................................
Zwei Hilfsprozeduren .............................................................................................
Die Antwort prüfen .................................................................................................
Das Benutzermenü ..................................................................................................
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
12.7.2
505
507
Windows Forms in WPF .........................................................................................
WPF in Windows Forms .........................................................................................
Anhang
A
14
A.4
A.5
B
Weitergabe eigener Windows-Programme .................................................... 513
Konfigurationsdaten ............................................................................................... 515
Lösungen der Übungsaufgaben ........................................................................................ 517
B.1
B.2
B.3
B.4
Lösung der Übungsaufgabe aus Kapitel 1 ........................................................
Lösungen der Übungsaufgaben aus Kapitel 2 ................................................
Lösungen der Übungsaufgaben aus Kapitel 4 ................................................
Lösungen der Übungsaufgaben aus Kapitel 8 ................................................
517
517
531
535
Index ............................................................................................................................................................... 537
511
Installation und technische Hinweise ............................................................................
511
A.1
A.2
A.3
511
511
513
Installation von Visual Studio Community 2015 ............................................
Arbeiten mit einer Formularvorlage ..................................................................
Arbeiten mit einer Projektvorlage ......................................................................
15
Index
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
537
Index
Index
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
538
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
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
539
Index
Index
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
540
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
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
541
Index
Index
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
542
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
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
543
Index
Index
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
544
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
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
545
Index
Index
Now................................................................................ 256
NumericUpDown .............................................. 68, 249
Overridable................................................................. 218
Overrides ............................................................ 218, 219
O
P
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
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
546
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
547
Index
Index
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
548
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
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.Charting ............................................................................ 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
549
Index
Index
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
550
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
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
551
Index
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
552
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
Know-how
Wissen,
wie’s
fürgeht.
Kreative.
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 Webprogrammierung.
Thomas Theis
Einstieg in Visual Basic 2015 –
Ideal für Programmiereinsteiger geeignet
552 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 Darstellung von der E-Book-Fassung des vorgestellten Buches abweichen können.
Diese Leseprobe ist in all ihren Teilen urheberrechtlich geschützt. Alle Nutzungs- und Verwertungsrechte liegen beim Autor und beim Verlag.
Teilen Sie Ihre Leseerfahrung mit uns!
Herunterladen