einstieg in visual basic 2010 - s3-eu-west-1.amazonaws.com · thomas theis einstieg in visual basic...

58
Thomas Theis Einstieg in Visual Basic 2010

Upload: phungkiet

Post on 11-Nov-2018

223 views

Category:

Documents


0 download

TRANSCRIPT

Thomas Theis

Einstieg in Visual Basic 2010

1541.book Seite 1 Mittwoch, 5. Mai 2010 10:28 10

Auf einen Blick

1 Einführung ........................................................................... 15

2 Grundlagen .......................................................................... 37

3 Fehlerbehandlung ................................................................ 101

4 Erweiterte Grundlagen ........................................................ 113

5 Objektorientierte Programmierung ..................................... 177

6 Wichtige Klassen in .NET .................................................... 211

7 Weitere Elemente eines Windows-Programms .................. 261

8 Datenbank-Anwendungen mit ADO.NET ............................ 301

9 Internet-Anwendungen mit ASP.NET .................................. 359

10 Zeichnen mit GDI+ ............................................................... 389

11 Beispielprojekte ................................................................... 401

A Installation und technische Hinweise ................................. 429

B Lösungen der Übungsaufgaben ........................................... 437

1541.book Seite 3 Mittwoch, 5. Mai 2010 10:28 10

5

Inhalt

1 Einführung ................................................................................ 15

1.1 Aufbau dieses Buches .................................................................. 151.2 Mein erstes Windows-Programm ................................................. 161.3 Visual Basic 2010-Entwicklungsumgebung ................................... 16

1.3.1 Ein neues Projekt ........................................................... 171.3.2 Einfügen von Steuerelementen ....................................... 181.3.3 Arbeiten mit dem Eigenschaftenfenster .......................... 191.3.4 Speichern eines Projekts ................................................. 221.3.5 Das Codefenster ............................................................. 221.3.6 Schreiben von Programmcode ........................................ 231.3.7 Kommentare .................................................................. 251.3.8 Starten, Ausführen und Beenden des Programms ........... 261.3.9 Ausführbares Programm ................................................. 261.3.10 Projekt schließen, Projekt öffnen .................................... 271.3.11 Übung ............................................................................ 271.3.12 Regeln für Zeilenumbrüche ............................................ 27

1.4 Arbeiten mit Steuerelementen ..................................................... 281.4.1 Steuerelemente formatieren ........................................... 281.4.2 Steuerelemente kopieren ............................................... 301.4.3 Eigenschaften zur Laufzeit ändern .................................. 301.4.4 Vergabe und Verwendung von Namen ........................... 331.4.5 Verknüpfung von Texten, mehrzeilige Texte ................... 331.4.6 Eigenschaft BackColor, Farben allgemein ........................ 34

2 Grundlagen ............................................................................... 37

2.1 Variablen und Datentypen ........................................................... 372.1.1 Namen und Werte ......................................................... 372.1.2 Deklarationen ................................................................ 382.1.3 Datentypen .................................................................... 382.1.4 Gültigkeitsbereich .......................................................... 412.1.5 Konstanten .................................................................... 432.1.6 Enumerationen .............................................................. 44

2.2 Operatoren .................................................................................. 462.2.1 Rechenoperatoren .......................................................... 462.2.2 Vergleichsoperatoren ..................................................... 482.2.3 Logische Operatoren ...................................................... 49

1541.book Seite 5 Mittwoch, 5. Mai 2010 10:28 10

Inhalt

6

2.2.4 Verkettungsoperator ...................................................... 502.2.5 Zuweisungsoperatoren ................................................... 512.2.6 Rangfolge der Operatoren .............................................. 51

2.3 Einfache Steuerelemente ............................................................. 532.3.1 Panel ............................................................................. 532.3.2 Zeitgeber ....................................................................... 542.3.3 Textfelder ....................................................................... 582.3.4 Zahlenauswahlfeld ......................................................... 61

2.4 Verzweigungen ............................................................................ 622.4.1 Einzeiliges If…Then…Else .............................................. 632.4.2 If…Then…Else-Block ...................................................... 642.4.3 Select Case ..................................................................... 662.4.4 Funktion IIf .................................................................... 672.4.5 Funktion Choose ............................................................ 682.4.6 Übungen ........................................................................ 68

2.5 Verzweigungen und Steuerelemente ............................................ 692.5.1 Kontrollkästchen ............................................................ 692.5.2 Optionsschaltfläche ........................................................ 712.5.3 Mehrere Ereignisse in einer Prozedur behandeln ............ 742.5.4 Mehrere Gruppen von Optionsschaltflächen .................. 752.5.5 Prozedur ohne Ereignis, Modularisierung ....................... 78

2.6 Schleifen ...................................................................................... 792.6.1 For ... Next ..................................................................... 792.6.2 Do ... Loop .................................................................... 822.6.3 With .............................................................................. 852.6.4 Übungen ........................................................................ 86

2.7 Schleifen und Steuerelemente ...................................................... 882.7.1 Listenfeld ....................................................................... 882.7.2 Listenfeld füllen ............................................................. 892.7.3 Wichtige Eigenschaften .................................................. 902.7.4 Wechsel der Auswahl ..................................................... 912.7.5 Wichtige Methoden ....................................................... 932.7.6 Mehrfachauswahl ........................................................... 962.7.7 Kombinationsfelder ........................................................ 97

3 Fehlerbehandlung .................................................................... 101

3.1 Fehlerarten .................................................................................. 1013.2 Syntaxfehler und IntelliSense ....................................................... 1013.3 Laufzeitfehler und Exception Handling ......................................... 104

3.3.1 Programm mit Laufzeitfehlern ........................................ 104

1541.book Seite 6 Mittwoch, 5. Mai 2010 10:28 10

Inhalt

7

3.3.2 Einfaches Exception Handling ......................................... 1063.3.3 Erweitertes Exception Handling ...................................... 107

3.4 Logische Fehler und Debugging ................................................... 1093.4.1 Einzelschrittverfahren ..................................................... 1093.4.2 Haltepunkte ................................................................... 1103.4.3 Überwachungsfenster ..................................................... 111

4 Erweiterte Grundlagen ............................................................. 113

4.1 Steuerelemente aktivieren ........................................................... 1134.1.1 Ereignis Enter ................................................................. 1134.1.2 Eigenschaften Enabled und Visible ................................. 116

4.2 Bedienung per Tastatur ................................................................ 1194.2.1 Eigenschaften TabIndex und TabStop ............................. 1194.2.2 Tastenkombination für Steuerelemente .......................... 120

4.3 Ereignisgesteuerte Programmierung ............................................. 1214.3.1 Eine Ereigniskette .......................................................... 1214.3.2 Endlose Ereignisketten ................................................... 1224.3.3 Textfelder koppeln ......................................................... 124

4.4 Mehrere Formulare ...................................................................... 1254.4.1 Allgemeine Code-Module .............................................. 129

4.5 Datenfelder ................................................................................. 1314.5.1 Eindimensionale Datenfelder .......................................... 1314.5.2 Ein Feld durchsuchen ..................................................... 1334.5.3 Weitere Feld-Operationen ............................................. 1344.5.4 Mehrdimensionale Datenfelder ...................................... 1364.5.5 Datenfelder initialisieren ................................................ 1404.5.6 Datenfelder sind dynamisch ........................................... 1414.5.7 Collections initialisieren ................................................. 1444.5.8 For-Each-Schleife ........................................................... 146

4.6 Datenstruktur ArrayList ................................................................ 1474.7 Benutzerdefinierte Datentypen .................................................... 1494.8 Prozeduren und Funktionen ......................................................... 152

4.8.1 Prozeduren .................................................................... 1534.8.2 Übergabe per Referenz ................................................... 1554.8.3 Funktionen .................................................................... 1584.8.4 Optionale Argumente .................................................... 1594.8.5 Beliebig viele Argumente ............................................... 1614.8.6 Datenfelder als Argumente ............................................. 1634.8.7 Rekursiver Aufruf ........................................................... 1654.8.8 Übungen zu Prozeduren und Funktionen ....................... 168

1541.book Seite 7 Mittwoch, 5. Mai 2010 10:28 10

Inhalt

8

4.9 Konsolenanwendung ................................................................... 1684.9.1 Anwendung erzeugen .................................................... 1684.9.2 Ein- und Ausgabe von Text ............................................ 1694.9.3 Eingabe einer Zahl .......................................................... 1704.9.4 Erfolgreiche Eingabe einer Zahl ...................................... 1714.9.5 Ausgabe formatieren ...................................................... 1724.9.6 Aufruf von der Kommandozeile ...................................... 174

5 Objektorientierte Programmierung ......................................... 177

5.1 Was ist Objektorientierung? ........................................................ 1775.2 Klasse, Eigenschaft, Methode, Objekt .......................................... 178

5.2.1 Objektverweis und Instanz ............................................. 1815.3 Eigenschaftsmethode ................................................................... 1825.4 Konstruktor ................................................................................. 1855.5 Referenzen und Werte ................................................................. 188

5.5.1 Objekte vergleichen ....................................................... 1905.6 Statische Elemente ...................................................................... 1925.7 Vererbung ................................................................................... 1955.8 Konstruktoren bei Vererbung ....................................................... 1995.9 Polymorphie ................................................................................ 2015.10 Schnittstellen ............................................................................... 204

5.10.1 Vorhandene Schnittstellen ............................................. 207

6 Wichtige Klassen in .NET ........................................................ 211

6.1 Klasse String für Zeichenketten .................................................... 2116.1.1 Eigenschaften der Klasse String ...................................... 2126.1.2 Trimmen ........................................................................ 2146.1.3 Splitten .......................................................................... 2156.1.4 Suchen ........................................................................... 2176.1.5 Einfügen ........................................................................ 2206.1.6 Löschen ......................................................................... 2216.1.7 Teilzeichenkette ermitteln .............................................. 2236.1.8 Zeichen ersetzen ............................................................ 2256.1.9 Ausgabe formatieren ...................................................... 226

6.2 Datum und Uhrzeit ...................................................................... 2276.2.1 Eigenschaften von DateTime .......................................... 2276.2.2 Rechnen mit Datum und Uhrzeit .................................... 230

6.3 Dateien und Verzeichnisse ........................................................... 232

1541.book Seite 8 Mittwoch, 5. Mai 2010 10:28 10

Inhalt

9

6.3.1 Lesen aus einer Textdatei ............................................... 2336.3.2 Schreiben in eine Textdatei ............................................ 2356.3.3 Sicheres Lesen aus einer Textdatei .................................. 2366.3.4 Sicheres Schreiben in eine Textdatei ............................... 2396.3.5 Datei mit wahlfreiem Zugriff .......................................... 2406.3.6 Die Klassen File und Directory ....................................... 2476.3.7 Das aktuelle Verzeichnis ................................................. 2486.3.8 Eine Liste der Dateien .................................................... 2496.3.9 Eine Liste der Dateien und Verzeichnisse ....................... 2506.3.10 Informationen über Dateien und Verzeichnisse .............. 2516.3.11 Bewegen in der Verzeichnishierarchie ............................ 253

6.4 Rechnen mit der Klasse Math ...................................................... 254

7 Weitere Elemente eines Windows-Programms ...................... 261

7.1 Hauptmenü ................................................................................. 2617.1.1 Erstellung des Hauptmenüs ............................................ 2617.1.2 Code des Hauptmenüs ................................................... 2647.1.3 Klasse Font .................................................................... 2667.1.4 Schriftart ........................................................................ 2667.1.5 Schriftgröße ................................................................... 2687.1.6 Schriftstil ........................................................................ 269

7.2 Kontextmenü ............................................................................... 2707.2.1 Erstellung des Kontextmenüs ......................................... 2707.2.2 Code des Kontextmenüs ................................................ 271

7.3 Symbolleiste ................................................................................ 2727.3.1 Erstellung der Symbolleiste ............................................ 2737.3.2 Code der Symbolleiste ................................................... 274

7.4 Statusleiste .................................................................................. 2767.4.1 Erstellung der Statusleiste .............................................. 2777.4.2 Code der Statusleiste ..................................................... 277

7.5 Eingabe-Dialogfeld ...................................................................... 2797.6 Ausgabe-Dialogfeld ..................................................................... 2827.7 Standard-Dialogfelder .................................................................. 288

7.7.1 Datei öffnen ................................................................... 2887.7.2 Datei speichern unter ..................................................... 2907.7.3 Verzeichnis auswählen ................................................... 2917.7.4 Farbe auswählen ............................................................ 2937.7.5 Schrifteigenschaften auswählen ...................................... 294

7.8 Steuerelement DataGridView ....................................................... 295

1541.book Seite 9 Mittwoch, 5. Mai 2010 10:28 10

Inhalt

10

8 Datenbank-Anwendungen mit ADO.NET ................................ 301

8.1 Was sind relationale Datenbanken? ............................................. 3018.1.1 Beispiel »Lager« .............................................................. 3028.1.2 Indizes ........................................................................... 3048.1.3 Relationen ..................................................................... 3058.1.4 Übungen ........................................................................ 309

8.2 Anlegen einer Datenbank in Microsoft Access .............................. 3108.2.1 Aufbau von Access ......................................................... 3118.2.2 Datenbank-Entwurf in Access 2007 ................................ 3128.2.3 Datenbank-Entwurf in einer älteren Version von Access . 3168.2.4 Übungen ........................................................................ 317

8.3 Datenbankzugriff mit Visual Basic ................................................ 3188.3.1 Beispiel-Datenbank ........................................................ 3188.3.2 Ablauf eines Zugriffs ....................................................... 3188.3.3 Verbindung .................................................................... 3198.3.4 SQL-Befehl ..................................................................... 3198.3.5 OleDb ............................................................................ 3208.3.6 Auswahlabfrage ............................................................. 3208.3.7 Aktionsabfrage ............................................................... 323

8.4 SQL-Befehle ................................................................................ 3248.4.1 Auswahl mit select ......................................................... 3258.4.2 Ändern mit update ......................................................... 3298.4.3 Löschen mit delete ......................................................... 3298.4.4 Einfügen mit insert ......................................................... 3308.4.5 Typische Fehler in SQL ................................................... 330

8.5 Ein Verwaltungsprogramm ........................................................... 3318.5.1 Initialisierung ................................................................. 3328.5.2 Alle Datensätze sehen .................................................... 3328.5.3 Datensatz einfügen ........................................................ 3348.5.4 Datensatz ändern ........................................................... 3368.5.5 Datensatz löschen .......................................................... 3398.5.6 Datensatz suchen ........................................................... 341

8.6 Abfragen über mehrere Tabellen .................................................. 3428.7 Verbindung zu MySQL ................................................................. 347

8.7.1 .NET-Treiber .................................................................. 3478.8 Arbeiten mit DataSets .................................................................. 349

8.8.1 Eine Tabelle in Detailansicht .......................................... 3498.8.2 Schließen ohne Speichern verhindern ............................. 3538.8.3 Eine Tabelle in DataGrid-Ansicht .................................... 3548.8.4 Mehrere Tabellen mit Relationen ................................... 355

1541.book Seite 10 Mittwoch, 5. Mai 2010 10:28 10

Inhalt

11

9 Internet-Anwendungen mit ASP.NET ...................................... 359

9.1 Grundlagen von Internet-Anwendungen ...................................... 3599.1.1 Statische Internet-Anwendungen ................................... 3609.1.2 Dynamische Internet-Anwendungen .............................. 3609.1.3 Vorteile von ASP.NET .................................................... 361

9.2 Ein lokaler Webserver .................................................................. 3619.2.1 Eine erste Internet-Anwendung ...................................... 362

9.3 Eine erste ASP.NET Anwendung .................................................. 3649.3.1 Fehlerhafte Programmierung .......................................... 366

9.4 Formatierung von Internetseiten .................................................. 3679.5 Senden und Auswerten von Formulardaten .................................. 3689.6 Kontrolle der Benutzereingaben ................................................... 3719.7 Weitere Formularelemente .......................................................... 3749.8 Ein Kalenderelement .................................................................... 3779.9 ASP.NET und ADO.NET ............................................................... 3799.10 Datenbank im Internet ändern ..................................................... 382

10 Zeichnen mit GDI+ ................................................................... 389

10.1 Grundlagen von GDI+ .................................................................. 38910.2 Linie, Rechteck, Polygon und Ellipse zeichnen ............................. 389

10.2.1 Grundeinstellungen ........................................................ 39010.2.2 Linie .............................................................................. 39110.2.3 Rechteck ........................................................................ 39210.2.4 Polygon ......................................................................... 39210.2.5 Ellipse ............................................................................ 39310.2.6 Dicke und Farbe ändern, Zeichnung löschen .................. 394

10.3 Text schreiben ............................................................................. 39510.4 Bilder darstellen ........................................................................... 39710.5 Dauerhaft zeichnen ...................................................................... 398

11 Beispielprojekte ....................................................................... 401

11.1 Spielprogramm Tetris ................................................................... 40111.1.1 Spielablauf ..................................................................... 40211.1.2 Programmbeschreibung ................................................. 40211.1.3 Steuerelemente .............................................................. 40311.1.4 Initialisierung des Programms ......................................... 40411.1.5 Erzeugen eines neuen Panels .......................................... 40611.1.6 Benutzer klickt auf Panel ................................................ 407

1541.book Seite 11 Mittwoch, 5. Mai 2010 10:28 10

Inhalt

12

11.1.7 Der Zeitgeber ................................................................. 40811.1.8 Panel löschen ................................................................. 40911.1.9 Panel seitlich bewegen ................................................... 41311.1.10 Panel nach unten bewegen ............................................ 41411.1.11 Pause ............................................................................. 414

11.2 Lernprogramm Vokabeln ............................................................. 41511.2.1 Benutzung des Programms ............................................. 41511.2.2 Erweiterung des Programms ........................................... 41711.2.3 Initialisierung des Programms ......................................... 41811.2.4 Ein Test beginnt ............................................................. 41911.2.5 Zwei Hilfsprozeduren ..................................................... 42111.2.6 Die Antwort prüfen ........................................................ 42211.2.7 Das Benutzermenü ......................................................... 423

Anhang ........................................................................................... 427

A Installation und technische Hinweise ...................................................... 429A.1 Inhalt des Datenträgers zu diesem Buch ....................................... 429A.2 Installation der Visual Basic 2010 Express Edition ........................ 429A.3 Arbeiten mit einer Formularvorlage ............................................. 430A.4 Arbeiten mit einer Projektvorlage ................................................ 431A.5 Weitergabe eigener Windows-Programme ................................... 431

A.5.1 Erstellung des Installationsprogramms ............................ 432A.5.2 Ablauf einer Installation ................................................. 432

A.6 Konfigurationsdaten .................................................................... 433A.7 Datenbankzugriff unter Vista 64-Bit-Version ................................ 435

B Lösungen der Übungsaufgaben ............................................................... 437B.1 Lösung der Übungsaufgabe aus Kapitel 1 ..................................... 437

B.1.1 Lösung ÜName .............................................................. 437B.2 Lösungen der Übungsaufgaben aus Kapitel 2 ............................... 437

B.2.1 Lösung ÜDatentypen ..................................................... 437B.2.2 Lösung ÜGültigkeitsbereich ............................................ 438B.2.3 Lösung ÜRechenoperatoren ........................................... 438B.2.4 Lösung ÜVergleichsoperatoren ....................................... 439B.2.5 Lösung ÜLogischeOperatoren ........................................ 439B.2.6 Lösung ÜOperatoren ...................................................... 439B.2.7 Lösung ÜPanelZeitgeber ................................................. 440B.2.8 Lösung ÜKran ................................................................ 440B.2.9 Lösung ÜSteuerbetrag, zwei Alternativen ....................... 442

1541.book Seite 12 Mittwoch, 5. Mai 2010 10:28 10

Inhalt

13

B.2.10 Lösung ÜKranVerzweigung ............................................ 443B.2.11 Lösung ÜKranOptionen .................................................. 445B.2.12 Lösung ÜForNext1 ......................................................... 447B.2.13 Lösung ÜForNext2 ......................................................... 448B.2.14 Lösung ÜDoLoop ........................................................... 448B.2.15 Lösung ÜZahlenraten ..................................................... 448B.2.16 Lösung ÜSteuertabelle ................................................... 449B.2.17 Lösung ÜListenfeld ......................................................... 450

B.3 Lösungen der Übungsaufgaben aus Kapitel 4 ............................... 451B.3.1 Lösung ÜEnabled ........................................................... 451B.3.2 Lösung ÜDatenfeldEindimensional ................................. 451B.3.3 Lösung ÜDatenfeldMehrdimensional ............................. 452B.3.4 Lösung ÜProzeduren ...................................................... 453B.3.5 Lösung ÜFunktionen ...................................................... 454

B.4 Lösungen der Übungsaufgaben aus Kapitel 8 ............................... 454B.4.1 Lösung zur Übung Projektverwaltung ............................. 454B.4.2 Lösung zur Übung Mietwagen ........................................ 455

Index ............................................................................................................ 457

1541.book Seite 13 Mittwoch, 5. Mai 2010 10:28 10

15

In diesem Kapitel erlernen Sie anhand eines ersten Projekts den Umgang mit der Entwicklungsumgebung und den Steuerele-menten. Sie sind anschließend in der Lage, Ihr erstes eigenes Windows-Programm zu erstellen.

1 Einführung

Visual Basic 2010 ist der Nachfolger von Visual Basic 2008 und damiteine weitere Version von Visual Basic .NET. Hierbei handelt es sich umeine objektorientierte Programmiersprache.

1.1 Aufbau dieses Buches

BeispieleDieses Buch vermittelt Ihnen zunächst einen einfachen Einstieg in dieProgrammierung mit Visual Basic 2010. Die Bearbeitung der Beispieleund das selbstständige Lösen der vorliegenden Übungsaufgaben helfendabei, da sie für schnelle Erfolgserlebnisse sorgen, die Sie zum Weiter-machen motivieren. In späteren Kapiteln werden auch die komplexenThemen vermittelt.

GrundlagenVon Anfang an wird mit anschaulichen Windows-Anwendungen gearbei-tet. Die Grundlagen der Programmiersprache und die Standardelementeeiner Windows-Anwendung, wie Sie sie schon von anderen Windows-Programmen kennen, werden gemeinsam vermittelt. Die Anschaulichkeiteiner Windows-Anwendung hilft Ihnen dabei, den eher theoretischenHintergrund der Programmiersprache leichter zu verstehen.

Express EditionEs wird die Visual Basic 2010 Express Edition eingesetzt. Diese freie Ver-sion von Visual Basic 2010 liegt dem Buch bei, Sie können sie aber auchbei Microsoft herunterladen. Sie muss innerhalb von dreißig Tagen beiMicrosoft registriert werden.

1541.book Seite 15 Mittwoch, 5. Mai 2010 10:28 10

16

Einführung1

Die Visual Basic 2010 Express Edition bietet eine komfortable Entwick-lungsumgebung. Sie umfasst einen Editor zur Erstellung des Programm-codes, einen Compiler zur Erstellung der ausführbaren Programme,einen Debugger zur Fehlersuche und vieles mehr.

Noch eine Anmerkung in eigener Sache:

Für die Hilfe bei der Erstellung dieses Buches bedanke ich mich beimTeam von Galileo Press, besonders bei Christine Siedle.

Thomas Theis

1.2 Mein erstes Windows-Programm

Anhand eines ersten Projekts werden die Schritte durchlaufen, die zurErstellung eines einfachen Programms mithilfe von Visual Basic 2010notwendig sind. Das Programm soll nach dem Aufruf zunächst aussehenwie in Abbildung 1.1.

Abbildung 1.1 Erstes Programm, nach dem Aufruf

Nach Betätigung des Buttons Hallo soll sich der Text in der oberstenZeile verändern, siehe Abbildung 1.2.

Abbildung 1.2 Nach Betätigung des Buttons »Hallo«

1.3 Visual Basic 2010-Entwicklungsumgebung

Während der Projekterstellung lernen Sie Schritt für Schritt die VisualBasic 2010-Entwicklungsumgebung kennen.

1541.book Seite 16 Mittwoch, 5. Mai 2010 10:28 10

17

Visual Basic 2010-Entwicklungsumgebung 1.3

1.3.1 Ein neues Projekt

Nach dem Aufruf des Programms Visual Basic 2010 Express Edition müs-sen Sie zur Erstellung eines neuen Projekts den Menüpunkt Datei � Neu �

Projekt � Windows Forms-Anwendung auswählen. Als Projektnamewird WindowsApplication1 vorgeschlagen.

Es erscheinen einige Elemente der Entwicklungsumgebung. FolgendeElemente sind besonders wichtig:

Form� Das Benutzerformular (Form) enthält die Oberfläche für den Benutzerdes Programms (siehe Abbildung 1.3).

Abbildung 1.3 Benutzerformular

Toolbox� Die Werkzeugsammlung (Toolbox) enthält die Steuerelemente fürden Benutzer, mit denen er den Ablauf des Programms steuern kann.Sie werden vom Programm-Entwickler in das Formular eingefügt(siehe Abbildung 1.4).

Abbildung 1.4 Toolbox, alle Kategorien von Steuerelementen

Eigenschaften-fenster

� Das Eigenschaftenfenster (Properties Window) dient zum Anzeigenund Ändern der Eigenschaften von Steuerelementen innerhalb desFormulars durch den Programm-Entwickler (siehe Abbildung 1.5).

1541.book Seite 17 Mittwoch, 5. Mai 2010 10:28 10

18

Einführung1

Abbildung 1.5 Eigenschaftenfenster

Projektmappen-Explorer

� Der Projektmappen-Explorer (Solution Explorer) zeigt das geöffneteProjekt und die darin vorhandenen Elemente (siehe Abbildung 1.6).

Abbildung 1.6 Projektmappen-Explorer

Sollte eines der letzten drei Elemente einmal nicht sichtbar sein, so kön-nen Sie es über das Menü Ansicht einblenden.

Zunächst werden nur einfache Programme mit wenigen Elementengeschrieben, daher wird der Projektmappen-Explorer noch nicht benö-tigt. Es empfiehlt sich, das Eigenschaftenfenster nach oben zu vergrö-ßern.

1.3.2 Einfügen von Steuerelementen

Label, Button 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änderli-che Texte auf der Benutzeroberfläche anzuzeigen. In diesem Programmsoll das Label einen Text anzeigen. Ein Button dient zum Startenbestimmter Programmteile oder, allgemeiner ausgedrückt, zum Auslösenvon Ereignissen. In diesem Programm sollen die Buttons dazu dienen,den Text anzuzeigen bzw. das Programm zu beenden.

1541.book Seite 18 Mittwoch, 5. Mai 2010 10:28 10

19

Visual Basic 2010-Entwicklungsumgebung 1.3

Allgemeine Steuerelemente

Um ein Steuerelement einzufügen, ziehen Sie es mithilfe der Maus vonder Toolbox an die gewünschte Stelle im Formular. Alle Steuerelementefinden sich in der Toolbox unter Alle Windows Forms. Übersichtlicherist der Zugriff über Allgemeine Steuerelemente (Common Controls),siehe Abbildung 1.7.

Abbildung 1.7 Toolbox, Allgemeine Steuerelemente

Steuerelement auswählen

Ein Doppelklick auf ein Steuerelement in der Toolbox fügt es ebenfalls indie Form ein. Anschließend können Ort und Größe noch verändert wer-den. Dazu müssen Sie das betreffende Steuerelement vorher durch Ankli-cken ausgewählt haben, siehe Abbildung 1.8. Ein überflüssiges Steuer-element können Sie durch Auswählen und Drücken der Taste (Entf)entfernen.

Abbildung 1.8 Ausgewählter Button

Die Größe und andere Eigenschaften des Formulars selbst können auchverändert werden. Dazu müssen Sie es vorher durch Anklicken auf einerfreien Stelle auswählen.

1.3.3 Arbeiten mit dem Eigenschaftenfenster

Die eingefügten Steuerelemente haben zunächst einheitliche Namen undAufschriften, diese sollten allerdings zur einfacheren Programmentwick-lung geändert werden. Es haben sich bestimmte Namenskonventioneneingebürgert, die die Lesbarkeit erleichtern. Diese Namen beinhaltenden Typ (mit drei Buchstaben abgekürzt) und die Aufgabe des Steuerele-ments (mit großem Anfangsbuchstaben).

1541.book Seite 19 Mittwoch, 5. Mai 2010 10:28 10

20

Einführung1

cmd, txt, lbl, ... Ein Button (eigentlich: Command Button), der die Anzeige der Zeit aus-lösen soll, wird beispielsweise mit cmdZeit bezeichnet. Weitere Vorsil-ben sind txt (Textfeld/Text Box), lbl (Bezeichnungsfeld/Label), opt(Optionsschaltfläche/Option Button), frm (Formular/Form) und chk

(Kontrollkästchen/Check Box).

Zur Änderung des Namens eines Steuerelementes müssen Sie es zunächstauswählen. Die Auswahl kann entweder durch Anklicken des Steuerele-ments auf dem Formular oder durch Auswahl aus der Liste am oberenEnde des Eigenschaftenfensters geschehen.

Eigenschaften-fenster

Im Eigenschaftenfenster werden alle Eigenschaften des ausgewähltenSteuerelements angezeigt. Die Liste ist zweispaltig: In der linken Spaltesteht der Name der Eigenschaft, in der rechten Spalte ihr aktueller Wert.Die Eigenschaft (Name) steht am Anfang der Liste der Eigenschaften. Diebetreffende Zeile wird durch Anklicken ausgewählt und der neue Namewird eingegeben. Nach Bestätigung mit der Taste (¢) ist die Eigenschaftgeändert, siehe Abbildung 1.9.

Abbildung 1.9 Button, nach der Namensänderung

Eigenschaft Text Die Aufschrift von Buttons, Labels und Formularen ist in der EigenschaftText angegeben. Sobald diese Eigenschaft verändert wird, erscheint dieveränderte Aufschrift in dem betreffenden Steuerelement. Auch denNamen und die Aufschrift des Formulars sollten Sie ändern. Im Folgen-den sind die gewünschten Eigenschaften für die Steuerelemente diesesProgramms in Tabellenform angegeben, siehe Tabelle 1.1.

Typ Eigenschaft Einstellung

Formular Text Mein erstes Programm

Button Name cmdHallo

Text Hallo

Tabelle 1.1 Steuerelemente mit Eigenschaften

1541.book Seite 20 Mittwoch, 5. Mai 2010 10:28 10

21

Visual Basic 2010-Entwicklungsumgebung 1.3

StartzustandZu diesem Zeitpunkt legen Sie den Startzustand fest, also die Eigenschaf-ten, die die Steuerelemente zu Beginn des Programms bzw. eventuellwährend des gesamten Programms haben sollen. Viele Eigenschaftenkönnen Sie auch während der Laufzeit des Programms durch den Pro-grammcode verändern lassen.

Bei einem Label ergibt die Einstellung der Eigenschaft Border Style aufFixed Single einen Rahmen. Zur Änderung auf Fixed Single müssen Siedie Liste bei der Eigenschaft aufklappen und den betreffenden Eintragauswählen, siehe Abbildung 1.10. Zur Änderung einiger Eigenschaftenmüssen Sie eventuell sogar ein Dialogfeld aufrufen.

Abbildung 1.10 Label, nach der Änderung von Name und BorderStyle

Im Label soll zunächst der Text (leer) erscheinen. Hierzu müssen Sie denvorhandenen Text durch Anklicken auswählen und ändern.

Liste der Steuerelemente

Sie finden alle in diesem Formular vorhandenen Steuerelemente in derListe, die sich am oberen Ende des Eigenschaftenfensters öffnen lässt.Dabei zeigt sich ein Vorteil der einheitlichen Namensvergabe: Die Steuer-elemente des gleichen Typs stehen direkt untereinander.

Button Name cmdEnde

Text Ende

Label Name lblAnzeige

Text (leer)

BorderStyle Fixed Single

Typ Eigenschaft Einstellung

Tabelle 1.1 Steuerelemente mit Eigenschaften (Forts.)

1541.book Seite 21 Mittwoch, 5. Mai 2010 10:28 10

22

Einführung1

1.3.4 Speichern eines Projekts

Alles speichern Die Daten eines Visual Basic-Projekts werden in verschiedenen Dateiengespeichert. Zum Speichern des gesamten Projekts wird der MenüpunktDatei � Alle Speichern verwendet. Diesen Vorgang sollten Sie in regel-mäßigen Abständen durchführen, damit keine Änderungen verlorengehen können.

Die in diesem Skript angegebenen Namen dienen als Empfehlung, umdie eindeutige Orientierung und das spätere Auffinden von alten Pro-grammen zu erleichtern.

1.3.5 Das Codefenster

Ereignis Der Ablauf eines Windows-Programms wird im Wesentlichen durch dasAuslösen von Ereignissen durch den Benutzer gesteuert. Er löst z. B. dieAnzeige des Texts Hallo aus, indem er auf den Button Hallo klickt. Sie alsEntwickler müssen dafür sorgen, dass aufgrund dieses Ereignisses dergewünschte Text angezeigt wird. Zu diesem Zweck schreiben Sie Pro-grammcode und ordnen diesen Code dem Ereignis zu. Der Code wird ineiner Ereignisprozedur abgelegt.

Ereignisprozedur Zum Schreiben einer Ereignisprozedur führen Sie am besten einen Dop-pelklick auf das betreffende Steuerelement aus. Es erscheint das Code-fenster. Zwischen der Formularansicht und der Codeansicht können Sieanschließend über die Menüpunkte Ansicht � Code bzw. Ansicht � Desi-

gner hin- und herschalten. Dies ist auch über die Registerkarten ober-halb des Formulars bzw. des Codefensters möglich, siehe Abbildung1.11.

Abbildung 1.11 Registerkarten

Nach erfolgtem Doppelklick auf den Button Hallo erscheinen im Code-fenster folgende Einträge:

Public Class Form1Private Sub cmdHallo_Click(

ByVal sender As System.Object,

1541.book Seite 22 Mittwoch, 5. Mai 2010 10:28 10

23

Visual Basic 2010-Entwicklungsumgebung 1.3

ByVal e As System.EventArgs) Handles cmdHallo.Click

End SubEnd Class

Listing 1.1 Projekt »MeinErstes«, Button »Hallo«, ohne Code

Innerhalb der Ereignisprozedur ist der Platz für den eigenen Programm-code.

ClassVB.NET ist eine objektorientierte Sprache. Ein wichtiges Element objekt-orientierter Sprachen sind Klassen. Alle Elemente des aktuellen Formu-lars Form1 stehen innerhalb der Klasse Form1 (zwischen Public Classund End Class). Auf die Einzelheiten der Objektorientierung wird zueinem späteren Zeitpunkt eingegangen, da dies hier noch nicht notwen-dig ist und eher verwirren würde.

SubDer Programmcode der Ereignisprozedur steht später zwischen PrivateSub und End Sub. Der Name der Prozedur besteht aus den zwei TeilenName des Steuerelements und Ereignis.

ZeilenumbruchDie Anweisung Private Sub ... ist sehr lang, daher wurde sie auf meh-rere Zeilen verteilt. Seit der Version 2010 werden auch in Visual BasicZeilenumbrüche an bestimmten Stellen einer Anweisung auf einfacheArt und Weise ermöglicht. Dies erhöht wesentlich die Lesbarkeit vonProgrammen. Aus Druckgründen werden in diesem Buch häufig längereAnweisungen auf mehrere Zeilen verteilt. Die Regeln für Zeilenumbrü-che finden Sie in Abschnitt 1.3.12.

Der anfänglich ausgeführte Doppelklick führt immer zu dem Ereignis,das am häufigsten mit dem betreffenden Steuerelement verbunden wird.Dies ist beim Button natürlich das Ereignis Click. Zu einem Steuerele-ment gibt es aber auch noch andere, mögliche Ereignisse.

1.3.6 Schreiben von Programmcode

In der Prozedur cmdHallo_Click() soll eine Befehlszeile eingefügt wer-den, so dass sie anschließend wie folgt aussieht:

Public Class Form1Private Sub cmdHallo_Click(

ByVal sender As System.Object,ByVal e As System.EventArgs) Handles cmdHallo.Click

1541.book Seite 23 Mittwoch, 5. Mai 2010 10:28 10

24

Einführung1

lblAnzeige.Text = "Hallo"End Sub

End Class

Listing 1.2 Projekt »MeinErstes«, Button »Hallo«, mit Code

Der Text muss in Anführungszeichen gesetzt werden, da Visual Basic sonstannimmt, dass es sich um eine Variable mit dem Namen Hallo handelt.

Anweisung Der Inhalt einer Prozedur setzt sich aus einzelnen Anweisungen zusam-men, die nacheinander ausgeführt werden. Die vorliegende Prozedurenthält nur eine Anweisung; in ihr wird mithilfe des Gleichheitszeichenseine Zuweisung durchgeführt.

Zuweisung Bei einer Zuweisung wird der Ausdruck rechts vom Gleichheitszeichenausgewertet und der Variablen, der Objekt-Eigenschaft oder der Steuere-lement-Eigenschaft links vom Gleichheitszeichen zugewiesen. Die Zei-chenkette Hallo wird der Eigenschaft Text des Steuerelements lblAn-zeige mithilfe der Schreibweise Steuerelement.Eigenschaft = Wertzugewiesen. Dies führt zur Anzeige des Werts.

Nach dem Wechsel auf die Formularansicht können Sie das nächste Steu-erelement auswählen, für das eine Ereignisprozedur geschrieben werdensoll.

Codeeditieren

Innerhalb des Codefensters können Sie Text mit den gängigen Methodender Textverarbeitung editieren, kopieren, verschieben und löschen.

Syntaxfehler Sollten Sie bereits bei der Eingabe des Programmcodes Syntaxfehlergemacht haben, so wird dies angezeigt. Sie sollten den Code unmittelbarentsprechend korrigieren.

In der Ereignisprozedur cmdEnde_Click() soll der folgende Code stehen:

Private Sub cmdEnde_Click(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles cmdEnde.Click

Me.Close()End Sub

Listing 1.3 Projekt »MeinErstes«, Button »Ende«

Die Methode Close() dient zum Schließen eines Formulars. Da es sichum das einzige Formular dieses Projekts handelt, wird dadurch das Pro-gramm beendet und die gesamte Windows-Anwendung geschlossen.

1541.book Seite 24 Mittwoch, 5. Mai 2010 10:28 10

25

Visual Basic 2010-Entwicklungsumgebung 1.3

MeMit Me wird das aktuelle Objekt einer Klasse bezeichnet. Da wir unsinnerhalb der Klasse für das aktuelle Formular befinden, bezieht sich Meauf dieses Formular. Streng genommen wäre Me nicht notwendig, aber eserhöht die Lesbarkeit des Programms.

Dies waren Beispiele zur Änderung der Eigenschaften eines Steuerele-ments zur Laufzeit des Programms durch Programmcode. Sie erinnernsich: Zu Beginn hatten wir die Start-Eigenschaften der Steuerelemente imEigenschaftenfenster eingestellt.

1.3.7 Kommentare

Einfaches Hochkomma

Bei längeren Programmen mit vielen Anweisungen gehört es zum gutenProgrammierstil, Kommentarzeilen zu schreiben. In diesen Zeilen wer-den einzelne Anweisungen oder auch längere Blöcke von Anweisungenerläutert, damit Sie selbst oder auch ein anderer Programmierer sie spä-ter leichter versteht. Eine Kommentarzeile beginnt mit einem einfachenHochkomma. Alle Zeichen bis zum Ende der Zeile werden als Kommen-tar angesehen und folglich nicht übersetzt oder ausgeführt.

Der folgende Programmcode wurde um eine Kommentarzeile ergänzt:

Private Sub cmdEnde_Click(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles cmdEnde.Click

' Schließt die AnwendungMe.Close()

End Sub

Listing 1.4 Projekt »MeinErstes«, Button »Ende«, mit Kommentar

Code auskommentieren

Ein kleiner Trick: Sollen bestimmte Programmzeilen für einen Test desProgramms kurzfristig nicht ausgeführt werden, so können Sie sie aus-kommentieren, indem Sie das Hochkomma vor die betreffenden Zeilen set-zen. Dies geht sehr schnell, indem Sie die betreffenden Zeile(n) markierenund anschließend das entsprechende Symbol in der Symbolleiste ankli-cken, siehe Abbildung 1.12. Rechts daneben befindet sich das Symbol, dasdie Auskommentierung nach dem Test wieder rückgängig macht.

Abbildung 1.12 Kommentar ein/aus

1541.book Seite 25 Mittwoch, 5. Mai 2010 10:28 10

26

Einführung1

1.3.8 Starten, Ausführen und Beenden des Programms

Programmstarten

Nach dem Einfügen der Steuerelemente und dem Erstellen der Ereignis-prozeduren ist das Programm fertig und kann von Ihnen gestartet wer-den. Dazu wird der Start-Button in der Symbolleiste (dreieckiger Pfeilnach rechts) betätigt. Alternativ starten Sie das Programm über die Funk-tionstaste (F5) oder den Menüpunkt Debuggen � Debugging Starten.Das Formular erscheint, das Betätigen der Buttons führt zum program-mierten Ergebnis.

Programmbeenden

Zur regulären Beendigung eines Programms ist der Button mit der Auf-schrift Ende vorgesehen. Möchten Sie ein Programm während des Ver-laufs abbrechen, können Sie auch den End-Button in der Symbolleiste(Quadrat) betätigen.

Fehler Tritt während der Ausführung eines Programms ein Fehler auf, so wirddies angezeigt und das Codefenster zeigt die entsprechende Ereignispro-zedur sowie die fehlerhafte Zeile an. Beenden Sie das Programm, korri-gieren Sie den Code und starten Sie das Programm wieder.

Programmtesten

Es wird empfohlen, das Programm bereits während der Entwicklungmehrmals durch Aufruf zu testen und nicht erst, wenn das Programmvollständig erstellt worden ist. Geeignete Zeitpunkte sind zum Beispiel

� nach dem Einfügen der Steuerelemente und dem Zuweisen der Eigen-schaften, die sie zu Programmbeginn haben sollen.

� nach dem Erstellen jeder Ereignisprozedur.

1.3.9 Ausführbares Programm

.exe-Datei Nach erfolgreichem Test des Programms könnten Sie auch die ausführ-bare Datei (.exe-Datei) außerhalb der Entwicklungsumgebung aufrufen.Haben Sie an den Grundeinstellungen nichts verändert und die vorge-schlagenen Namen verwendet, so findet sich die zugehörige .exe-Dateides aktuellen Projekts im Verzeichnis Eigene Dateien\Visual Studio 2010\Projects\MeinErstes\MeinErstes\bin\Debug. Das Programm kann also imWindows-Explorer direkt über Doppelklick von Ihnen gestartet werden.

Die Weitergabe eines eigenen Windows-Programms auf einen anderenPC ist etwas aufwendiger. Der Vorgang wird im Anhang beschrieben.

1541.book Seite 26 Mittwoch, 5. Mai 2010 10:28 10

27

Visual Basic 2010-Entwicklungsumgebung 1.3

1.3.10 Projekt schließen, Projekt öffnen

Projekt schließen

Sie können ein Projekt schließen über den Menüpunkt Datei � Projekt

schließen. Falls Sie Veränderungen vorgenommen haben, werden Siegefragt, ob Sie diese Änderungen speichern möchten.

Möchten Sie die Projektdaten sicherheitshalber zwischendurch spei-chern, so ist dies über den Menüpunkt Datei � Alle speichern möglich.Dies ist bei längeren Entwicklungsphasen sehr zu empfehlen.

Projekt öffnen

Zum Öffnen eines vorhandenen Projekts wählen Sie den MenüpunktDatei � öffnen � Projekt. Im darauf folgenden Dialogfeld Projekt öff-

nen wählen Sie zunächst das gewünschte Projektverzeichnis aus undanschließend die gleichnamige Datei mit der Endung .sln.

1.3.11 Übung

Übung ÜNameErstellen Sie ein Windows-Programm mit einem Formular, das zwei But-tons und ein Label beinhaltet, siehe Abbildung 1.13. Bei Betätigung desersten Buttons erscheint im Label Ihr Name. Bei Betätigung des zweitenButtons wird das Programm beendet. Namensvorschläge: ProjektnameÜName, Buttons cmdMyName und cmdEnde, Label lblMyName.

Abbildung 1.13 Übung ÜName

1.3.12 Regeln für Zeilenumbrüche

ZeilenumbruchSeit der Version 2010 werden auch in Visual Basic Zeilenumbrüche anbestimmten Stellen einer Anweisung auf einfache Art und Weise ermög-licht. Dies erhöht die Lesbarkeit des Programmcodes. Einige Regeln wur-den bereits im ersten Programm angewandt.

Hier noch einmal die Prozedur cmdHallo_Click():

Private Sub cmdHallo_Click(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles cmdHallo.Click

lblAnzeige.Text = "Hallo"End Sub

Listing 1.5 Projekt »MeinErstes«, Ausschnitt

1541.book Seite 27 Mittwoch, 5. Mai 2010 10:28 10

28

Einführung1

Regeln Ein Zeilenumbruch ist möglich:

� nach einer öffnenden Klammer, siehe erste Prozedurzeile

� vor einer schließenden Klammer, siehe dritte Prozedurzeile

� nach einem Komma, siehe zweite Prozedurzeile

Außerdem wäre ein Zeilenumbruch z. B. auch möglich:

� nach den meisten Operatoren, also auch nach dem Zuweisungsopera-tor (=) hinter lblAnzeige.Text, siehe Abschnitt 2.2

� nach einem Punkt hinter einem Objektnamen, also auch nach demPunkt hinter dem Objektnamen lblAnzeige

Auf keinen Fall dürfen Zeilenumbrüche innerhalb einer Zeichenkettedurchgeführt werden. Weitere Möglichkeiten für Zeilenumbrüche wer-den jeweils an passender Stelle erläutert.

Unterstrich Falls Sie das Zeichen _ (Unterstrich) am Ende einer Zeile notieren, dannkann anschließend in jedem Fall ein Zeilenumbruch durchgeführt wer-den, unabhängig von den oben genannten Regeln.

1.4 Arbeiten mit Steuerelementen

1.4.1 Steuerelemente formatieren

Hilfslinien Zur besseren Anordnung der Steuerelemente auf dem Formular könnenSie sie mithilfe der Maus nach Augenmaß verschieben. Dabei erscheinenautomatisch Hilfslinien, falls das aktuelle Element horizontal oder verti-kal parallel zu einem anderen Element steht.

MehrereSteuerelemente

markieren

Weitere Möglichkeiten bieten die Menüpunkte im Menü Format. In vie-len Fällen müssen vorher mehrere Steuerelemente auf einmal markiertwerden, siehe Abbildung 1.14.

Abbildung 1.14 Mehrere markierte Elemente

1541.book Seite 28 Mittwoch, 5. Mai 2010 10:28 10

29

Arbeiten mit Steuerelementen 1.4

Dies geschieht entweder

� durch Umrahmung der Elemente mit einem Rechteck, nachdem Siezuvor das Steuerelement Zeiger ausgewählt haben, oder

� durch Mehrfachauswahl, indem ab dem zweiten auszuwählendenSteuerelement die (ª)-Taste (wie für Großbuchstaben) oder die(Strg)-Taste gedrückt wird.

Menü FormatÜber das Menü Format haben Sie anschließend folgende Möglichkeitenzur Anpassung der Steuerelemente:

� Die ausgewählten Steuerelemente können horizontal oder vertikalzueinander ausgerichtet werden (Menü Format � Ausrichten).

� Die horizontalen und/oder vertikalen Dimensionen der ausgewähltenSteuerelemente können angeglichen werden (Menü Format � Größe

angleichen).

Einheitliche Abstände

� Die horizontalen und vertikalen Abstände zwischen den ausgewähl-ten Steuerelementen können angeglichen, vergrößert, verkleinertoder entfernt werden (Menü Format � Horizontaler Abstand / Ver-

tikaler Abstand).

� Die Steuerelemente können horizontal oder vertikal innerhalb desFormulars zentriert werden (Menü Format � auf Formular zentrie-

ren).

� Sollten sich die Steuerelemente teilweise überlappen, können Sie ein-zelne Steuerelemente in den Vorder- bzw. Hintergrund schieben(Menü Format � Reihenfolge).

� Sie können alle Steuerelemente gleichzeitig gegen versehentlichesVerschieben absichern (Menü Format � Steuerelemente Sperren).Diese Sperrung gilt nur während der Entwicklung des Programms.

Abbildung 1.15 zeigt ein Formular mit drei Buttons, die alle links ausge-richtet sind und im gleichen vertikalen Abstand voneinander stehen.

Abbildung 1.15 Nach der Formatierung

1541.book Seite 29 Mittwoch, 5. Mai 2010 10:28 10

30

Einführung1

Übung

Laden Sie das Projekt MeinErstes aus dem vorherigen Abschnitt, markie-ren Sie darin mehrere Steuerelemente und testen Sie die einzelnen Mög-lichkeiten des Format-Menüs.

1.4.2 Steuerelemente kopieren

Steuerelementekopieren

Zur schnelleren Erzeugung eines Projekts können vorhandene Steuer-elemente einschließlich aller ihrer Eigenschaften kopiert werden. Mar-kieren Sie hierzu die gewünschten Steuerelemente und kopieren Sie sieentweder

� ü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 umben-annt und an der gewünschten Stelle angeordnet werden.

Übung

Laden Sie das Projekt MeinErstes aus dem vorherigen Abschnitt undkopieren Sie einzelne Steuerelemente. Kontrollieren Sie anschließend dieListe der vorhandenen Steuerelemente im Eigenschaftenfenster auf ein-heitliche Namensgebung.

1.4.3 Eigenschaften zur Laufzeit ändern

Size, Location Steuerelemente haben die Eigenschaften Size (mit den KomponentenWidth und Height) und Location (mit den Komponenten X und Y) zurAngabe von Größe und Position. X und Y geben die Koordinaten der obe-ren linken Ecke des Steuerelements an, gemessen von der oberen linkenEcke des umgebenden Elements (meist das Formular). Alle Werte wer-den in Pixeln gemessen.

Alle diese Eigenschaften können sowohl während der Entwicklungszeitals auch während der Laufzeit eines Projekts verändert werden. ZurÄnderung während der Entwicklungszeit können Sie die Eigenschaft wiegewohnt im Eigenschaftenfenster eingeben. Als Beispiel für Änderungenwährend der Laufzeit soll das folgende Programm (Projekt Steuerele-mente) dienen, siehe Abbildung 1.16.

1541.book Seite 30 Mittwoch, 5. Mai 2010 10:28 10

31

Arbeiten mit Steuerelementen 1.4

Abbildung 1.16 Position und Größe bestimmen

Der Programmcode:

Public Class Form1Private Sub cmdPositionRel_Click(...) Handles ...

cmdTest.Location = New Point(cmdTest.Location.X + 20,cmdTest.Location.Y)

End 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 SubEnd Class

Listing 1.6 Projekt »Steuerelemente«

Zur Erläuterung:

Verkürzte Darstellung

� Der Kopf der einzelnen Prozeduren wurde aus Gründen der Über-sichtlichkeit jeweils in verkürzter Form abgebildet. Dies wird bei denmeisten nachfolgenden Beispielen ebenfalls so sein, außer wenn esgenau auf die Inhalte des Prozedurkopfs ankommt.

� Das Formular enthält fünf Buttons. Die oberen vier Buttons dienenzur Veränderung von Position und Größe des fünften Buttons.

1541.book Seite 31 Mittwoch, 5. Mai 2010 10:28 10

32

Einführung1

� Die Position eines Elements kann relativ zur aktuellen Position oderauf absolute Werte eingestellt werden. Das Gleiche gilt für die Größeeines 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 die-ser Struktur liefert ein Wertepaar. In diesem Programm wird mit Newjeweils ein neues Objekt der Struktur Point erzeugt, um das Werte-paar bereitzustellen.

X, Y � Bei Betätigung des Buttons Position Abs wird die Position des fünftenButtons auf die Werte X=100 und Y=200 gestellt, gemessen von der lin-ken oberen Ecke des Formulars.

� Bei Betätigung des Buttons Position Rel wird die Position des fünftenButtons auf die Werte X = cmdTest.Location.X + 20 und Y = cmd-Test.Location.Y gestellt. Bei X wird also der alte Wert der Kompo-nente X um 20 erhöht, das Element bewegt sich nach rechts. Bei Ywird der alte Wert der Komponente Y nicht verändert, das Elementbewegt 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ünftenButtons auf die Werte Width = 50 und Height = 100 gestellt.

� Bei Betätigung des Buttons Größe Rel wird die Größe des fünftenButtons auf die Werte Width = cmdTest.Size.Width + 20 und Height= cmdTest.Size.Height gestellt. Bei Width wird also der alte Wert derKomponente Width um 20 erhöht, das Element wird breiter. BeiHeight wird der alte Wert der Komponente Height nicht verändert,das Element verändert seine Höhe nicht.

Nach einigen Klicks sieht das Formular aus wie in Abbildung 1.17.

Abbildung 1.17 Veränderung von Eigenschaften zur Laufzeit

1541.book Seite 32 Mittwoch, 5. Mai 2010 10:28 10

33

Arbeiten mit Steuerelementen 1.4

1.4.4 Vergabe und Verwendung von Namen

Beachten Sie in allen Programmen, dass jedes Steuerelement seinen eige-nen, eindeutigen Namen hat und immer mit diesem Namen angespro-chen werden muss. Es passiert erfahrungsgemäß besonders am Anfanghäufig, dass ein Programm nicht zum gewünschten Erfolg führt, weil einnicht vorhandener Name verwendet wurde. In diesem Zusammenhangweise ich noch einmal auf die Namenskonventionen hin:

� Buttons sollten Namen wie z. B. cmdEnde, cmdAnzeigen, cmdBerechnenusw. haben.

� Labels sollten Namen wie z. B. lblAnzeige, lblName, lblUhrzeit,lblBeginnDatum haben.

Diese Namen liefern eine eindeutige Information über Typ und Funktiondes Steuerelements. Falls Sie beim Schreiben von Programmcodeanschließend diese Namen z. B. vollständig in Kleinbuchstaben eingeben,werden sie nach Verlassen der Zeile automatisch korrigiert. Daran kön-nen Sie schnell erkennen, ob Sie tatsächlich ein vorhandenes Steuerele-ment verwendet haben.

1.4.5 Verknüpfung von Texten, mehrzeilige Texte

& und vbCrLfEs können mehrere Texte in einer Ausgabe mithilfe des Zeichens & mit-einander verknüpft werden. Falls Sie eine mehrzeilige Ausgabe wün-schen, so müssen Sie zusätzlich einen Zeilenvorschub mithilfe der inte-grierten Visual Basic-Konstante vbCrLf eingeben.

Nachfolgend wird das Projekt Steuerelemente ergänzt um ein Label, indem die aktuelle Position und Größe des Buttons angezeigt werden. Diessoll nach Betätigung des Buttons Anzeige geschehen:

Public Class Form1[...]

Private Sub cmdAnzeige_Click(...) Handles ...lblAnzeige.Text =

"Position: X: " & cmdTest.Location.X &", Y: " & cmdTest.Location.Y & vbCrLf &"Größe: Breite: " & cmdTest.Size.Width &", Höhe: " & cmdTest.Size.Height

End SubEnd Class

Listing 1.7 Projekt »Steuerelemente«, mit Anzeige

1541.book Seite 33 Mittwoch, 5. Mai 2010 10:28 10

34

Einführung1

Nach einigen Klicks und der Betätigung des Buttons Anzeige sieht dasFormular aus wie in Abbildung 1.18.

Abbildung 1.18 Anzeige der Eigenschaften

1.4.6 Eigenschaft BackColor, Farben allgemein

BackColor Die Hintergrundfarbe eines Steuerelements wird mit der EigenschaftBackColor festgelegt. Dabei können Sie die Farbe zur Entwicklungszeitleicht mithilfe einer Farbpalette oder aus Systemfarben auswählen.

Color Hintergrundfarben und andere Farben können auch zur Laufzeit einge-stellt werden, dabei bedient man sich Farbwerten. Diese Farbwerte kön-nen Sie über die Struktur Color auswählen.

Ein Beispiel, ebenfalls im Projekt Steuerelemente:

Public Class Form1[...]

Private Sub cmdFarbe_Click(...) Handles ...Me.BackColor = Color.YellowlblAnzeige.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, zumBeispiel Yellow. Der Wert kann der Eigenschaft BackColor des Steu-erelements zugewiesen werden, hier ist dies das Formular selbst (Me).

FromArgb() � Außerdem bietet die Struktur die Methode FromArgb(). Diese kannauf verschiedene Arten aufgerufen werden. Eine dieser Arten erwar-tet genau drei Parameter, nämlich die Werte für Rot, Grün und Blau,jeweils zwischen 0 und 255.

1541.book Seite 34 Mittwoch, 5. Mai 2010 10:28 10

35

Arbeiten mit Steuerelementen 1.4

Das Formular sieht nach der Änderung der Eigenschaft Farbe aus wie inAbbildung 1.19, wobei sich die Farbänderung bei der Schwarzweißdar-stellung in diesem Buch natürlich leider nicht gut wiedergeben lässt.

Abbildung 1.19 Nach Änderung der Eigenschaft »Farbe«

1541.book Seite 35 Mittwoch, 5. Mai 2010 10:28 10

401

Als weiterführende Übungsaufgaben werden in diesem Kapitel zwei lauffähige Beispielprojekte vorgeführt. Haben Sie den geschilderten Aufbau verstanden, können Sie später eigene Ver-besserungen oder Erweiterungen einbringen.

11 Beispielprojekte

Bei den beiden Beispielprojekten handelt es sich zum einen um dasbekannte Tetris-Spiel und zum anderen einen Vokabeltrainer.

11.1 Spielprogramm Tetris

Im Folgenden wird das bekannte Spielprogramm Tetris in einer verein-fachten, nachvollziehbaren Version für Visual Basic realisiert und erläu-tert. Das Programm beinhaltet:

� ein zweidimensionales Feld

� einen Timer

� einen Zufallsgenerator

� die Erzeugung und Löschung von Steuerelementen zur Laufzeit

� die Zuordnung von Ereignisprozeduren zu Steuerelementen, die erstzur Laufzeit erzeugt werden

Abbildung 11.1 zeigt die Benutzeroberfläche des Programms.

1541.book Seite 401 Mittwoch, 5. Mai 2010 10:28 10

402

Beispielprojekte11

Abbildung 11.1 Tetris

11.1.1 Spielablauf

Panel fälltherunter

Nach Programmstart fällt ein Steuerelement vom Typ Panel in einer vonacht möglichen Farben so weit herunter, bis es auf den Rand des Spiel-felds oder ein anderes Panel trifft. Es kann mithilfe der drei ButtonsLinks (Li), Rechts (Re) und Drop (Dr) bewegt werden. Drop bewirkt einsofortiges Absenken des Panels auf die unterste mögliche Position.

Level Falls sich drei gleichfarbige Panels untereinander oder nebeneinanderbefinden, so verschwinden sie. Panels, die sich eventuell darüber befin-den, rutschen nach. Anschließend wird die Fallgeschwindigkeit derPanels erhöht, d. h. die Schwierigkeitsstufe wird gesteigert, man gelangtzum nächsten Level.

Ende Sobald ein Panel nur noch in der obersten Zeile platziert werden kann,ist das Spiel zu Ende. Ziel des Spiels ist es, so viele Panels wie möglich zuplatzieren. Mit dem Button Pause kann das Spiel unterbrochen werden,eine erneute Betätigung des Buttons lässt das Spiel weiterlaufen.

11.1.2 Programmbeschreibung

Hilfsfeld Der Kasten, in dem sich die fallenden Panels befinden, ist 8 Spalten breitund 13 Zeilen hoch. Als Hilfskonstruktion steht das zweidimensionaleFeld F mit 10 Spalten und 15 Zeilen zur Verfügung, in dem jedes existie-rende Panel mit seiner laufenden Nummer vermerkt ist.

1541.book Seite 402 Mittwoch, 5. Mai 2010 10:28 10

403

Spielprogramm Tetris 11.1

Im Beispiel in Tabelle 11.1 wird der Inhalt des Felds F nach den Panels 0bis 11, also nach 12 gefallenen Panels angezeigt. Die Panels 1, 6 und 7hatten die gleiche Farbe, standen über- oder nebeneinander und sinddeshalb schon verschwunden. Die Randelemente werden zu Spielbeginnmit dem Wert der Konstanten Rand=-2 besetzt. Alle Elemente des FeldesF, die kein Panel enthalten, also leer sind, haben den Wert der Konstan-ten Leer=-1.

11.1.3 Steuerelemente

Es gibt zu Beginn des Programms folgende Steuerelemente:

� vier Buttons für Links, Rechts, Drop und Pause

� drei Panels als Begrenzungslinien des Spielfelds

Timer� einen Timer, der das aktuelle Panel automatisch weiter fallen lässt(Startwert für den Zeitintervall: 500ms).

Im Verlauf des Programms werden weitere Steuerelemente vom TypPanel hinzugefügt bzw. wieder entfernt.

Ze / Sp 0 1 2 3 4 5 6 7 8 9

1 –2 –1 –1 –1 –1 –1 –1 –1 –1 –2

2 –2 –1 –1 –1 –1 –1 –1 –1 –1 –2

3 –2 –1 –1 –1 –1 –1 –1 –1 –1 –2

4 –2 –1 –1 –1 –1 –1 –1 –1 –1 –2

5 –2 –1 –1 –1 –1 –1 –1 –1 –1 –2

6 –2 –1 –1 –1 –1 –1 –1 –1 –1 –2

7 –2 –1 –1 –1 –1 –1 –1 –1 –1 –2

8 –2 –1 –1 –1 –1 –1 –1 –1 –1 –2

9 –2 –1 –1 –1 –1 –1 –1 –1 –1 –2

10 –2 –1 –1 –1 –1 –1 –1 –1 –1 –2

11 –2 –1 –1 –1 11 –1 –1 –1 –1 –2

12 –2 –1 –1 –1 3 8 9 –1 –1 –2

13 –2 –1 0 10 2 4 5 –1 –1 –2

14 –2 –2 –2 –2 –2 –2 –2 –2 –2 –2

Tabelle 11.1 Spielfeld

1541.book Seite 403 Mittwoch, 5. Mai 2010 10:28 10

404

Beispielprojekte11

11.1.4 Initialisierung des Programms

Zu Beginn des Programms werden die klassenweit gültigen Variablenund Konstanten vereinbart und die Form1_Load-Prozedur durchlaufen:

Public Class Form1' Index des aktuellen PanelsDim PX As Integer

' Gesamtes Spielfeld inkl. RandfelderDim F(14, 9) As Integer

' Zeile und Spalte des aktuellen PanelsDim PZ As IntegerDim PS As Integer

' SchwierigkeitsstufeDim Stufe As Integer

' Eine zunächst leere Liste von Spiel-PanelsDim PL As New ArrayList

' Ein Feld von Farben für die PanelsDim FarbenFeld() As Color = {Color.Red,

Color.Yellow, Color.Green, Color.Blue,Color.Cyan, Color.Magenta, Color.Black,Color.White}

' Konstanten für Status eines FeldpunktesConst Leer = –1Const Rand = –2

Private Sub Form1_Load(...) Handles MyBase.LoadDim Z, S As Integer

' Zufallsgenerator initialisierenRandomize()

' Feld besetzenFor Z = 1 To 13

F(Z, 0) = RandFor S = 1 To 8

F(Z, S) = LeerNext S

1541.book Seite 404 Mittwoch, 5. Mai 2010 10:28 10

405

Spielprogramm Tetris 11.1

F(Z, 9) = RandNext Z

For S = 0 To 9F(14, S) = Rand

Next S

' InitialisierungStufe = 1NächstesPanel()

End Sub[...]End Class

Listing 11.1 Projekt »Tetris«, Variablen, Konstanten, Start

Zur Erläuterung der klassenweit gültigen Variablen und Konstanten:

� Die laufende Nummer (der Index) des aktuell fallenden Panels wird inder Variablen PX festgehalten.

Hilfsfeld� Das gesamte Spielfeld, das in Abschnitt 11.1.2 schematisch dargestelltwurde, wird im zweidimensionalen Feld F gespeichert.

� Die Variablen PZ und PS beinhalten die Zeilen- und Spalten-Positiondes aktuell fallenden Panels innerhalb des Spielfelds.

Level� Die Variable Stufe kennzeichnet den Schwierigkeitsgrad des Spiels.Jedes Mal, wenn drei Panels, die untereinander oder nebeneinanderlagen, gelöscht wurden, wird die Stufe um 1 erhöht. Dies sorgt für einkürzeres Timer-Intervall, die Panels werden schneller.

Liste von Panels� PL ist eine ArrayList von Steuerelementen vom Typ Panel. ArrayListskönnen beliebige Objekte enthalten. Dies können Variablen, Objekteeigener Klassen oder, wie hier, Steuerelemente, also Objekte vorhan-dener Klassen sein. Zu Beginn ist die ArrayList leer.

� Das Feld FarbenFeld enthält insgesamt acht Farben. Die Farben derPanels werden per Zufallsgenerator ermittelt.

� Die Konstanten Leer und Rand werden erzeugt. Die Namen der Kon-stanten sind im Programm leichter lesbar als die Werte –1 bzw. –2.

Zur Erläuterung der Form1_Load-Prozedur:

Zufallsgenerator� Es wird zunächst der Zufallsgenerator initialisiert.

� Anschließend werden die Elemente des oben beschriebenen Hilfs-felds F mit Leer bzw. Rand besetzt.

1541.book Seite 405 Mittwoch, 5. Mai 2010 10:28 10

406

Beispielprojekte11

� Die Schwierigkeitsstufe wird auf 1 gesetzt.

Erstes Panel � Es wird die Prozedur NächstesPanel() aufgerufen. Sie ist in diesemFall für die Erzeugung des ersten fallenden Panels zuständig.

11.1.5 Erzeugen eines neuen Panels

Die Prozedur NächstesPanel() dient zur Erzeugung eines neuen fallen-den Panels. Dies geschieht zu Beginn des Spiels und nachdem ein Panelauf dem unteren Rand des Spielfelds oder auf einem anderen Panel zumStehen gekommen ist.

Public Class Form1[...]

Private Sub NächstesPanel()Dim Farbe As IntegerDim p As New Panel

' Neues Panel zur ArrayList hinzufügenPL.Add(p)

' Eventhandler für Event 'Click' zuweisenAddHandler p.Click,

AddressOf PanelClickReaktion

' Neues Panel platzierenp.Location = New Point(100, 80)p.Size = New Point(20, 20)

' Farbauswahl für neues PanelFarbe = Math.Floor(Rnd() * 8)p.BackColor = FarbenFeld(Farbe)

' Neues Panel zum Formular hinzufügenControls.Add(p)

' Index für späteren Zugriff ermittelnPX = PL.Count – 1

' Index als Info zu Panel hinzufügenp.Tag = PX

' Aktuelle Zeile, SpaltePZ = 1PS = 5

End Sub

1541.book Seite 406 Mittwoch, 5. Mai 2010 10:28 10

407

Spielprogramm Tetris 11.1

[...]End Class

Listing 11.2 Projekt »Tetris«, Prozedur »NächstesPanel«

Zur Erläuterung:

� Es wird ein Objekt vom Typ Panel neu erzeugt.

Neues Listen-element

� Damit darauf auch außerhalb der Prozedur zugegriffen werden kann,wird ein Verweis auf dieses Panel mithilfe der Methode Add() derArrayList PL hinzugefügt.

Eventhandler� Zu dem neuen Panel wird mithilfe von AddHandler ein Eventhandlerzum Ereignis Benutzer klickt auf Panel hinzugefügt. Dies ist für denSpielablauf nicht notwendig, soll aber zeigen, wie man Ereignisse zudynamisch erzeugten Steuerelementen hinzufügen kann. Der Event-handler verweist auf die Prozedur PanelClickReaktion(), die imnächsten Abschnitt erläutert wird.

� Es werden die Eigenschaften Ort, Größe und Farbe des neuen Panelsbestimmt.

Neues Steuer-element

� Das Panel wird mithilfe der Methode Add() zu der Collection Cont-rols hinzugefügt. Dies ist eine Liste der Steuerelemente des Formu-lars. Dadurch wird das Panel sichtbar.

� Seine laufende Nummer (der Index) wird mithilfe der EigenschaftCount ermittelt. Diese Nummer wird für den späteren Zugriff benö-tigt.

Eigenschaft Tag� Die Eigenschaft Tag eines Steuerelements kann zur Speicherung belie-biger, nicht sichtbarer Informationen genutzt werden. In diesem Fallewird der soeben ermittelte Index zum Panel hinzugefügt. Dies istebenfalls für den Spielablauf nicht notwendig, wird aber für die Pro-zedur zum Ereignis Benutzer klickt auf Panel benötigt.

� Die Variablen PZ und PS, die die Position des aktuell fallenden Panelsim Spielfeld F angeben, werden gesetzt.

11.1.6 Benutzer klickt auf Panel

In der Prozedur PanelClickReaktion() wird die Reaktion auf das ent-sprechende Ereignis festgehalten:

Public Class Form1[...]

Private Sub PanelClickReaktion(

1541.book Seite 407 Mittwoch, 5. Mai 2010 10:28 10

408

Beispielprojekte11

ByVal sender As System.Object,ByVal e As System.EventArgs)

' Verweis auf PanelDim p As Panel

' Verweis auf geklicktes Panel gesetztp = sender

' Eigenschaften des geklickten Panels ändernlblPNr.Text = "P " & p.Tagp.BorderStyle = BorderStyle.FixedSingle

End Sub[...]End Class

Listing 11.3 Projekt »Tetris«, Prozedur »PanelClickReaktion«

Zur Erläuterung:

� Der Kopf der Prozedur wird wie gewohnt notiert.

� Es wird ein Verweis auf ein Objekt des Typs Panel deklariert.

� Dieser Verweis wird anschließend auf das sendende Objekt gesetzt,also auf das Panel, das geklickt wurde.

� Damit ist es möglich, auf die Eigenschaften des betreffenden Panelslesend bzw. schreibend zuzugreifen. In diesem Falle wird der in derEigenschaft Tag gespeicherte Index des Panels ausgegeben und dieForm des Randes geändert.

11.1.7 Der Zeitgeber

In regelmäßigen Zeitabständen wird das Timer-Ereignis erzeugt unddamit die Ereignisprozedur timT_Tick() aufgerufen. Diese sorgt dafür,dass sich das aktuelle Panel nach unten bewegt, falls dies noch möglichist.

Public Class Form1[...]

Private Sub timT_Tick(...) Handles timT.Tick' Falls es nicht mehr weiter gehtIf F(PZ + 1, PS) <> Leer Then

' Oberste Zeile erreichtIf PZ = 1 Then

timT.Enabled = FalseMessageBox.Show("Das war's")

1541.book Seite 408 Mittwoch, 5. Mai 2010 10:28 10

409

Spielprogramm Tetris 11.1

Exit SubEnd If

F(PZ, PS) = PX ' BelegenAllePrüfen()NächstesPanel()

Else' Falls es noch weiter gehtPL(PX).Top = PL(PX).Top + 20PZ = PZ + 1

End IfEnd Sub

[...]End Class

Listing 11.4 Projekt »Tetris«, Zeitgeber

Zur Erläuterung:

� Zunächst wird geprüft, ob sich unterhalb des aktuellen Panels nochein freies Feld befindet.

� Ist dies nicht der Fall, so hat das Panel seine Endposition erreicht.

Endposition� Befindet sich diese Endposition in der obersten Zeile, so ist das Spielzu Ende. Der Timer wird deaktiviert, anderenfalls würden weiterePanels erzeugt. Es erscheint eine Meldung, und die Prozedur wirdunmittelbar beendet. Will der Spieler erneut beginnen, so muss er dasProgramm beenden und neu starten.

� Befindet sich die Endposition nicht in der obersten Zeile, so wird diePanelnummer im Feld F mit der aktuellen Zeile und Spalte vermerkt.Dies dient der Kennzeichnung eines belegten Feldelements.

Prüfen� Die Prozedur AllePrüfen() wird aufgerufen (siehe unten), um festzu-stellen, ob es drei gleichfarbige Panels über- oder nebeneinander gibt.Anschließend wird das nächste Panel erzeugt.

Weiter fallen� Befindet sich unterhalb des Panels noch ein freies Feld, so kann dasPanel weiter fallen. Seine Koordinaten und die aktuelle Zeilennum-mer werden verändert.

11.1.8 Panel löschen

Rekursive Prozedur

Die Prozedur AllePrüfen() ist eine rekursive Prozedur, mit deren Hilfefestgestellt wird, ob es drei gleichfarbige Panels nebeneinander oder

1541.book Seite 409 Mittwoch, 5. Mai 2010 10:28 10

410

Beispielprojekte11

übereinander gibt. Ist dies der Fall, werden diese Panels entfernt und diedarüber liegenden Panels rutschen nach. Eventuell befinden sich nunwieder drei gleichfarbige Panels neben- oder übereinander, es muss alsoerneut geprüft werden. Dies geschieht so lange, bis keine drei gleichfar-bigen Panels neben- oder übereinander gefunden wurden.

Die Prozedur AllePrüfen() bedient sich intern der beiden FunktionenNebenPrüfen() und ÜberPrüfen().

Public Class Form1[...]

Private Sub AllePrüfen()Dim Z, S As IntegerDim Neben, Über As BooleanNeben = FalseÜber = False

' Drei gleiche Panels nebeneinander ?For Z = 13 To 1 Step –1

For S = 1 To 6Neben = NebenPrüfen(Z, S)If Neben Then Exit For

Next SIf Neben Then Exit For

Next Z

' Drei gleiche Panels übereinander ?For Z = 13 To 3 Step –1

For S = 1 To 8Über = ÜberPrüfen(Z, S)If Über Then Exit For

Next SIf Über Then Exit For

Next Z

If Neben Or Über Then' SchnellerStufe = Stufe + 1timT.Interval = 5000 / (Stufe + 9)

' Eventuell kann jetzt noch eine Reihe' entfernt werdenAllePrüfen()

End IfEnd Sub

1541.book Seite 410 Mittwoch, 5. Mai 2010 10:28 10

411

Spielprogramm Tetris 11.1

' Falls 3 Felder nebeneinander besetztPrivate Function NebenPrüfen(ByVal Z As Integer,

ByVal S As Integer) As BooleanDim ZX, SX As IntegerNebenPrüfen = False

If F(Z, S) <> Leer AndF(Z, S + 1) <> Leer AndF(Z, S + 2) <> Leer Then

' Falls drei Farben gleichIf PL(F(Z, S)).BackColor =

PL(F(Z, S + 1)).BackColor AndPL(F(Z, S)).BackColor =PL(F(Z, S + 2)).BackColor Then

For SX = S To S + 2' PL aus dem Formular löschenControls.Remove(PL(F(Z, SX)))' Feld leerenF(Z, SX) = Leer

' Panels oberhalb des entladenen' Panels absenkenZX = Z – 1Do While F(ZX, SX) <> Leer

PL(F(ZX, SX)).Top =PL(F(ZX, SX)).Top + 20

' Feld neu besetzenF(ZX + 1, SX) = F(ZX, SX)F(ZX, SX) = LeerZX = ZX – 1

Loop

Next SXNebenPrüfen = True

End IfEnd If

End Function

' Falls drei Felder übereinander besetztPrivate Function ÜberPrüfen(ByVal Z As Integer,

ByVal S As Integer) As Boolean

1541.book Seite 411 Mittwoch, 5. Mai 2010 10:28 10

412

Beispielprojekte11

Dim ZX As IntegerÜberPrüfen = False

If F(Z, S) <> Leer And F(Z – 1, S) <> Leer AndF(Z – 2, S) <> Leer Then

' Falls drei Farben gleichIf PL(F(Z, S)).BackColor =

PL(F(Z – 1, S)).BackColor AndPL(F(Z, S)).BackColor =PL(F(Z – 2, S)).BackColor Then

' 3 Panels entladenFor ZX = Z To Z – 2 Step –1

' PL aus dem Formular löschenControls.Remove(PL(F(ZX, S)))' Feld leerenF(ZX, S) = Leer

Next ZXÜberPrüfen = True

End IfEnd If

End FunctionEnd Class[...]

Listing 11.5 Projekt »Tetris«, Panel löschen

Zur Erläuterung:

� Die Variablen Neben und Über kennzeichnen die Tatsache, dass dreigleichfarbige Panels neben- oder übereinander gefunden wurden. Siewerden zunächst auf False gesetzt.

Nebeneinander � Zunächst wird geprüft, ob sich drei gleichfarbige Panels nebeneinan-der befinden. Dies geschieht, indem für jedes einzelne Feldelement inder Funktion NebenPrüfen() geprüft wird, ob es selbst und seine bei-den rechten Nachbarn mit einem Panel belegt sind, und ob diesePanels gleichfarbig sind. Die Prüfung beginnt beim Panel unten linksund setzt sich bis zum drittletzten Panel der gleichen Zeile fort.Anschließend werden die Panels in der Zeile darüber geprüft usw.

Panels löschen � Sobald eine Reihe gleichfarbiger Panel gefunden wurde, werden alledrei Panels mithilfe der Methode Remove() aus der Collection der Steu-erelemente des Formulars gelöscht, d. h. sie verschwinden aus dem

1541.book Seite 412 Mittwoch, 5. Mai 2010 10:28 10

413

Spielprogramm Tetris 11.1

Formular. Ihre Position im Feld F wird mit –1 (=Leer) besetzt. Nunmüssen noch alle Panels, die sich eventuell oberhalb der drei Panelsbefinden, um eine Position abgesenkt werden. Die Variable Neben wirdauf True gesetzt. Die doppelte Schleife wird sofort verlassen.

Übereinander� Analog wird nun in der Funktion ÜberPrüfen() geprüft, ob sich dreigleichfarbige Panels übereinander befinden. Ist dies der Fall, so wer-den sie aus der Collection der Steuerelemente des Formulars gelöscht.Ihre Positionen im Feld F werden mit –1 besetzt. Über den drei Panelskönnen sich keine weiteren Panels befinden, die entfernt werdenmüssten.

Rekursiv� Falls durch eine der beiden Prüfungen eine Reihe gefunden und ent-fernt wurde, so wird die Schwierigkeitsstufe erhöht und das Timer-Intervall verkürzt. Nun muss geprüft werden, ob sich durch dasNachrutschen von Panels wiederum ein Bild mit drei gleichfarbigenPanels über- oder nebeneinander ergeben hat. Die Prozedur AllePrü-fen() ruft sich also so lange selbst auf (rekursive Prozedur), bis keineReihe mehr gefunden wurde.

11.1.9 Panel seitlich bewegen

Mithilfe der beiden Ereignisprozeduren cmdLinks_Click() undcmdRechts_Click() werden die Panels nach links bzw. rechts bewegt,falls dies möglich ist.

Public Class Form1[...]

Private Sub cmdLinks_Click(...) Handles ...If F(PZ, PS – 1) = Leer Then

PL(PX).Left = PL(PX).Left – 20PS = PS – 1

End IfEnd Sub

Private Sub cmdRechts_Click(...) Handles ...If F(PZ, PS + 1) = Leer Then

PL(PX).Left = PL(PX).Left + 20PS = PS + 1

End IfEnd Sub

[...]End Class

Listing 11.6 Projekt »Tetris«, Panel seitlich bewegen

1541.book Seite 413 Mittwoch, 5. Mai 2010 10:28 10

414

Beispielprojekte11

Zur Erläuterung:

Seitlich � Es wird geprüft, ob sich links bzw. rechts vom aktuellen Panel einfreies Feldelement befindet. Ist dies der Fall, so wird das Panel nachlinks bzw. rechts verlegt und die aktuelle Spaltennummer verändert.

11.1.10 Panel nach unten bewegen

Die Ereignisprozedur cmdUnten_Click() dient der wiederholten Bewe-gung der Panels nach unten, falls dies möglich ist. Diese Bewegung wirdso lange durchgeführt, bis das Panel auf die Spielfeldbegrenzung oder einanderes Panel stößt.

Public Class Form1[...]

Private Sub cmdUnten_Click(...) Handles ...Do While F(PZ + 1, PS) = Leer

PL(PX).Top = PL(PX).Top + 20PZ = PZ + 1

LoopF(PZ, PS) = PX 'BelegenAllePrüfen()NächstesPanel()

End Sub[...]End Class

Listing 11.7 Projekt »Tetris«, Panel nach unten bewegen

Zur Erläuterung:

Nach unten � Es wird geprüft, ob sich unter dem aktuellen Panel ein freies Feldele-ment befindet. Ist dies der Fall, so wird das Panel nach unten verlegtund die aktuelle Zeilennummer verändert. Dies geschieht so lange, bisdas Panel auf ein Hindernis stößt.

� Anschließend wird das betreffende Feldelement belegt. Es wirdgeprüft, ob nun eine neue Reihe von drei gleichfarbigen Panels exis-tiert und das nächste Panel wird erzeugt.

11.1.11 Pause

Spiel anhalten Abhängig vom aktuellen Zustand wird durch Betätigen des ButtonsPause in den Zustand Pause geschaltet oder wieder zurück.

1541.book Seite 414 Mittwoch, 5. Mai 2010 10:28 10

415

Lernprogramm Vokabeln 11.2

Public Class Form1[...]

Private Sub cmdPause_Click(...) Handles ...timT.Enabled = Not timT.Enabled

End SubEnd Class

Listing 11.8 Projekt »Tetris«, Pause

Zur Erläuterung:

� Der Zustand des Timers wechselt zwischen Enabled = True und En-abled = False.

11.2 Lernprogramm Vokabeln

In diesem Abschnitt wird ein kleines, erweiterungsfähiges Vokabel-Lern-programm (Projekt Vokabeln) vorgestellt. Es beinhaltet:

� eine Datenbank als Basis

� ein Hauptmenü

� die Nutzung einer ArrayList

� einen Zufallsgenerator

� eine Benutzerführung, abhängig vom Programmzustand

� Lesen einer Textdatei

11.2.1 Benutzung des Programms

Nach dem Start erscheint die Benutzeroberfläche (siehe Abbildung 11.2).

Abbildung 11.2 Benutzeroberfläche

1541.book Seite 415 Mittwoch, 5. Mai 2010 10:28 10

457

Index

– 47# 173, 227% 326& 33, 50, 120, 263&= 51* 47, 49*= 51+ 47+= 51/ 47/= 51: 63< 48, 326<= 48, 326<> 48, 326-= 51= 48, 51, 326> 48, 326>= 48, 326? 49\ 47^ 47^= 51_ 3261 zu 1-Relation 3051 zu n-Relation 303, 30664-bit-Version 319, 435

A

Abfrage 311accdb 313Access 310

2007 3122007, ConnectionString 322Version vor 2007 316

Accessor 183Acos() 255Add()

ArrayList 149, 334, 407Controls 407Datum und Uhrzeit 230Listenfeld 89

AddHandler 407AddHours() 230

Addition 47AddMilliseconds() 230AddMinutes() 230AddMonths() 230AddSeconds() 230AddYears() 230ADO.NET 301Aktionsabfrage 323Aktivierungsreihenfolge 119Alt-Taste 120and (SQL) 326And (VB) 49Anführungszeichen 40Anweisung 24

mehrere 63mehrfach durchlaufen 79

Anwendung weitergeben 431app.config 434Append 234Arcus Cosinus 255Arcus Sinus 255Arcus Tangens 255args 174Argument 153

beliebig viele 161optional 159

ArgumentOutOfRangeException 220Array, Klasse 134ArrayList 147, 332, 405

füllen 334leeren 334

As 40, 158Asin() 255asp Calendar 379asp Label 368ASP.NET 359

Development Server 362Programmierfehler 366

Atan() 255Aufzählung 44Ausgabe

formatieren 172mehrzeilig 33

Ausgabe-Dialogfeld 282Auskommentierung 25

1541.book Seite 457 Mittwoch, 5. Mai 2010 10:28 10

458

Index

Austauschformat 215Auswahlabfrage 320

B

BackColor 34Basisklasse 196

Methode erreichen 197Bedingung 62Befehlsschaltfläche 18Bericht 312Bezeichnungsfeld 18Beziehung 301, 303

erstellen 315, 317Bild in Zeichnung 397Bildlaufleiste 58BindingNavigator 352BindingSource 352body 364Boolean 38Border Style 21Breakpoint 110Browser 359Brush 389Button 18ByRef 156Byte 38ByVal 155

C

Calendar 378Cancel, Eigenschaft 354Cascading Style Sheets 360Case 66Case Else 66Catch 107Ceiling() 255Cells 299Char 38, 212, 214Checkbox 69, 374Checked 70, 72

in Menü 265CheckedChanged 69, 72Choose() 68Class 23, 178Clear() 334, 394ClickOnce-Verteilung 432Clientseitige Programmierung 360

Clone() 136, 207Close() 24, 128, 235, 319, 353Codeansicht 22Code-Modul 129, 169Codezeile

auskommentieren 25editieren 24lang 23

Collection 144, 407Color 34, 293, 294, 394ColorDialog 293ColumnIndex 300Columns 297ComboBox 97CommandText 320Common Controls 19Connection 320ConnectionString 319, 322, 349, 381Connector/NET 347Console 169Container 53, 363ContextMenuStrip 270Controls 407ControlToValidate 374Convert

ToDouble() 60ToInt32() 281

Cos() 255Cosinus 255Count 90, 217count() 344Create 234, 236CreateGraphics() 389CSS 360CSV-Datei 215

D

Data Source 319, 349DataBind() 381DataGrid 381DataGridView 295, 354

Konfigurationsmenü 356DataGridViewCellEventArgs 300DataGridViewColumnCollection 297DataGridViewRowCollection 297DataSet 349

wurde geändert 354DataSource 381

1541.book Seite 458 Mittwoch, 5. Mai 2010 10:28 10

459

Index

Date 38Datei 232

Änderungszeitpunkt 248Attribut 248Erzeugungszeitpunkt 248Information über 238, 247lesen 233, 240löschen 247öffnen 240öffnen, Dialog 288schließen 235, 240schreiben 240speichern, Dialog 290wahlfreier Zugriff 240Zugriffszeitpunkt 248

Daten speichern 232Datenbank 301, 415

Anzahl Datensätze 344Datensätze gruppieren 346erstellen 312Navigations-Symbolleiste 351Summe über Datensätze 346verknüpfte Abfrage 342, 355

Datenbankdatei 311Datenbankfenster 316Datenbanksystem 304Datenfeld 131

als Parameter 163Dimensionsgröße 143durchsuchen 133, 136eindimensional 131initialisieren 140Klasse 134kopieren 136mehrdimensional 136sortieren 136Startindex 132

Datenkapselung 179, 199Datenpuffer 349Datenquellen anzeigen 351Datensatz 302

ändern 329auswählen 325einfügen 330löschen 329sortieren 327

Datenträger zum Buch 429Datentyp 38

benutzerdefiniert 149

DateTime 227Datum 227

berechnen 230Bestandteil 228prüfen 246

Day 228DayOfWeek 228DayOfYear 228Debug 109

beenden 60, 106, 363DecimalPlaces 61default.aspx 364delete 319, 329desc 327Description 292Detailtabelle 306Dezimaltrennzeichen 336DialogResult 283, 288DialogResultOk 289Dim 40, 132Directory 247Display 374Division 47Do 82Doppelklick 23Doppelpunkt 63Double 38DrawEllipse() 393DrawImage() 397DrawLine() 391DrawPolygon() 392DrawRectangle() 392DrawString() 396DropDown 97DropDownList 97DropDownStyle 97

E

E 255Eigenschaft 178

ändern 17, 30statisch 192

Eigenschaftenfenster 17, 20Eigenschaftsmethode 182Ein- und Ausgabe, nur Text 169Eingabe 58

einer Zahl 170Eingabe-Dialogfeld 279

1541.book Seite 459 Mittwoch, 5. Mai 2010 10:28 10

460

Index

Eingabeformular 368Eingabekontrolle 371Einzelschrittverfahren 109Ellipse 393Else 63, 65Enabled 55, 116, 415End Class 178End If 65End Interface 206End Select 66End Structure 151Enter 113Enumeration 44Environment 293Equals() 190Ereignis 18, 22

mehrere 74Ereignisgesteuerte Programmierung 121Ereigniskette 121

endlos 122Ereignisliste 116Ereignisprozedur 22Eulersche Zahl 255Exception

Klasse 107Exception Handling 104ExecuteNonQuery() 320, 324ExecuteReader() 320exe-Datei 26Exists() 238, 247Exit Do 82Exit For 80Exit Function 158Exit Sub 153Exp() 255

F

F5-Taste 26F8-Taste 109F9-Taste 110Farbe wählen, Dialog 293Fehler 101

logische 109Fehlerkorrektur 102Feld � Datenfeld

Datenbank 302Feldname 302File 238, 247

FileClose() 240FileGetObject() 240FileMode 234FileName 288FileOpen() 240FilePutObject() 240FileStream 233FileSystemEntries() 247FillEllipse() 393FillPolygon() 392FillRectangle() 392Filter 288firma.mdb 318FirstDayOfWeek 46Fixed Single 21Floor() 255FolderBrowserDialog 291Font 227, 266, 294Font.Style 269FontDialog 294FontFamily 269FontStyle.Bold 269FontStyle.Italic 269For 79For-Each 146form (HTML) 371Form (VB) 17Form_Activated 115Form_Load 83Format() 226Formatvorlage 360FormClosing 353FormClosingEventArgs 354Formular 17, 312

aktivieren 115anzeigen 128hinzufügen 126löschen 430mehrere 125schließen 353

Formularansicht 22Formularvorlage 430Fortschrittsbalken 277FromArgb() 34FromFile() 397Funktion 158

mathematische 254

1541.book Seite 460 Mittwoch, 5. Mai 2010 10:28 10

461

Index

G

Ganzzahl-Division 47GDI+ 389Get-Accessor 183GetAttributes() 248GetCreationTime() 248GetCurrentDirectory() 247GetFiles() 247GetLastAccessTime() 248GetLastWriteTime() 248GetUpperBound() 143gleich 48, 326Gleichheitszeichen 24, 51Graphics 389Größer als 48, 326group by 346GroupBox 75Gültigkeitsbereich 41, 155

H

Häkchen 69Haltepunkt 110

entfernen 111Handles 74HasChanges() 354Hauptmenü 261, 415head 363Headertext 298Height 30Hilfslinien 28Hilfstabelle 304Hoch 255Hochkomma 25Hour 228HTML 360html 363HTML-Markierung 363

I

ICloneable 207id 365If

Block 64einzeilig 63

IIf() 67IIS 361

Image 273, 397Implementation 204Implements 206Imports 234, 320Increment 61Index 132

Datenbank 301, 304eindeutig 304

index.htm 362IndexOf() 136, 217IndexOfAny() 217IndexOutOfRangeException 132Inherits 197Initial Catalog 349InitialDirectory 288Initialisierung 82Inkonsistenz 303input 371InputBox() 279insert 319insert into 330Insert() 93, 220

ArrayList 149Installationsdatei 429Instanz 181Instanziierung 181Integer 38Integrierte Konstante 44IntelliSense 102Interface 204, 206Internet Information Services 361Internet-Anwendung 359

Daten senden 368dynamisch 360erstellen 362

Internet-Datenbank 379ändern 382

Internetseite formatieren 367Interval 55, 278InvalidCastException 105

Klasse 108Is 66IsDate() 246IsNumeric() 246IsPostBack 370IsValid 374Items 88

1541.book Seite 461 Mittwoch, 5. Mai 2010 10:28 10

462

Index

J

Jahr 228JavaScript 360

K

Kalender 377Kill() 247Klammer 52Klasse 23

abgeleitet 196Definition 178statisches Element 192

Klassenhierarchie 195Klassenweit gültige Variable 41Kleiner als 48, 326Kombinationsfeld 97

in Menü 263Kommandozeile 175Kommandozeilenparameter 174Kommentarzeile 25Konfigurationsdaten 433Konsolenanwendung 168Konstante 43Konstruktor 185, 199

parameterlos 187Kontextmenü 270Kontrollkästchen 69

in Menü 263Kontrollstruktur 62Kreiszahl 255

L

Label 18LastIndexOf() 217Laufzeitfehler 104Length 212like (SQL) 326Like (VB) 49Linie 391ListBox 88Listenfeld 88localhost 363Location 30, 53Log() 255Log10() 255Logarithmus 255

lokal 41Long 38Loop 82

M

m zu n-Relation 307Main() 169Markierungssprache 360Mastertabelle 306Math 254Maximum 61, 133, 278MaxLength 58MaxSize 294mdb-Datei 316Me 25Mehrfachauswahl 29, 66, 96Mehrfachvererbung 205Menü 261MenuStrip 261Message 107MessageBox 282MessageBoxButtons 283MessageBoxIcon 283Methode 153, 178

statisch 192überladen 186

Microsoft.Jet.OLEDB.4.0 319Millisecond 228Millisekunde 228Minimum 61, 133, 278MinSize 294Minute 228Mod 47modal 128Modul allgemein 129Modularisierung 79, 153Module1.vb 168Modulo 47Monat 228Month 228MultiExtended 96MultiLine 58Multiplikation 47Mustervergleich 49My.MySettings() 434MyBase 83, 197, 200MyBase.New() 200MySQL 347

1541.book Seite 462 Mittwoch, 5. Mai 2010 10:28 10

463

Index

MySQL.Data 348MySqlClient 348MySqlCommand 348MySqlConnection 348MySqlDataReader 348

N

Nachkommastellen 40, 61Name 20Namenskonvention 19, 33NET-Treiber 347New 32, 180, 185Next 81Nicht-Operator 49Nicht-proportionale Schriftart 226not (SQL) 326Not (VB) 49Now 227NumericUpDown 61, 221

O

Object 38, 190, 276Objekt

erzeugen 185Schreibweise 85vergleichen 190

Objektorientierung 177Objektverweis 181, 188

vergleichen 324Oder-Operator 49Öffentliche Variable 41Öffnungsmodus 234OleDb 320OleDbCommand 320OleDbConnection 319OleDbReader 320OnSelectionChanged 379Open 234Open() 319OpenFileDialog 288Operator 46

für Berechnungen 46logisch 49, 326Priorität 51Rangfolge 51Vergleich 48Zuweisung 51

option 376Optional 160Optionsschaltfläche 71

mehrere Gruppen 75or (SQL) 326Or (VB) 49

Bit-Operator 269order by 327OverflowException 105, 108Overloads 191, 197Overridable 202Overrides 203

P

Page 365Page_Load 365Page-Direktive 365Paint-Ereignis 399PaintEventArgs 400Panel 53, 402ParamArray 161Parameter 153

beliebig viele 161optional 159

PasswordChar 58Passwort-Abfrage 58Peek() 235Pen 389Pfadangabe relativ 239PI 255Pinsel 389

Farbe 394Pixel 30Platzhalter 326Point 32, 393Polygon 392Polymorphie 201Potenzierung 47Pow() 255Preserve 141Primärindex 304Primärschlüssel erstellen 314, 317Private 41, 180Programm

beenden 26starten 26testen 26

ProgressBar 277

1541.book Seite 463 Mittwoch, 5. Mai 2010 10:28 10

464

Index

ProjektDatenbank hinzufügen 350neues 17öffnen 27schließen 27speichern 22Verweis hinzufügen 348

Projektmappen-Explorer 18Projektvorlage 431Properties Window 17Property 182Protected 199Provider 319Prozedur 23, 153

allgemein 78verlassen 153

Public 41, 180, 199

R

Radio Button 71, 374Random Access 240Randomize() 82Rangfolge 48Read() 322Reader 320ReadLine() 169, 235Rechenoperator 46Rechteck 392Rectangle 392ReDim 141Redundanz 303ReferenceEquals() 276, 324Referentielle Integrität 316Referenztyp 188Rekursion 165Relation 303

erstellen 315, 317Relational 301Remove() 221, 412

ArrayList 149RemoveAt() 93, 423

ArrayList 149Replace() 225, 336RequiredFieldValidator 374Ringtausch 157Rnd() 82RootFolder 292Round() 255

RowIndex 300Rows 297Rückgabewert 158, 159runat 365Runden 255

S

SaveFileDialog 290Schalter 69Schleife 79

geschachtelt 137Schnittstelle 204Schrift 266

auswählen, Dialog 294Schriftart 266

nicht-proportional 226Schriftgröße 268Schriftstil 269Schrittweite 61, 79script 365Scrollbalken 88ScrollBars 58, 272Second 228Sekundärindex 305Sekunde 228select 319, 322, 325, 376Select Case 66SelectAll() 125SelectedDate 378SelectedIndex 90, 268SelectedIndexChanged 91SelectedIndices 96SelectedItem 90SelectedItems 96SelectedPath 292SelectionMode 96, 97Semikolon 215Sender 276Separator 263Serverseitige Programmierung 360Server-Steuerelement 367, 377Set-Accessor 183SetCurrentDirectory() 247Setup-Datei 429Shared 193Short 38Show(), MessageBox 282ShowColor 294

1541.book Seite 464 Mittwoch, 5. Mai 2010 10:28 10

465

Index

ShowDialog() 128, 288ShowNewFolderButton 292Simple 97Sin() 255Single 38Sinus 255Size 30, 32, 267SolidBrush 391Solution Explorer 18Sort() 136SpecialFolder 293Split() 215SQL 319

typische Fehler 330Sqrt() 255StackOverFlowException 123Startformular 431Startparameter 174Startzustand 21Statisch 41Statusleiste 276StatusStrip 277Step 79Steuerelement

Abstand einstellen 29aktivieren 55, 116ausrichten 29auswählen 19dynamisch erzeugen 407einfügen 18Größe 30Hintergrundfarbe 34Kontextmenü 270kopieren 30Liste 407markieren 28Notizen speichern 407Position 30, 53sichtbar 116zur Laufzeit erzeugen 401zur Laufzeit löschen 401, 412

Stift 389Dicke 394Farbe 394

StreamReader 233StreamWriter 235Strg-C 172Strg-F5 170

String 39, 211feste Länge 240

Structure 151Structured Query Language 319Struktur 39, 149

Definition 151Stunde 228Style 267, 269Sub 23submit 371SubString() 223Subtract() 230Subtraktion 47sum() 346Symbolleiste 272Syntaxfehler 24, 101System.Data.OleDb 381System.IO 233

T

Tabelle 311darstellen 295

Tabellenausgabe 226Tabellenentwurf 313TabIndex 119TableAdapter 353TableAdapterManager 353TabStop 119Tag 407Tag der Woche 228Tag des Jahres 228Tag des Monats 228Tan() 255Tangens 255Tastaturbedienung 119Tastenkombination 120Tetris 401Text 20, 58, 213

in Zeichnung 396mehrzeilig 58umwandeln 59verketten 50

TextBox in Menü 263TextChanged 117, 221, 268Textfeld 58

alles auswählen 125ändern 117kopieren 58

1541.book Seite 465 Mittwoch, 5. Mai 2010 10:28 10

466

Index

Textfeld (Forts.)koppeln 124

Then 63, 65TimeOfDay 228Timer 54, 278, 401TimeSpan 230title (HTML) 364Title (VB) 288To 66, 79Today 227TodayDayStyle 379ToDouble() 60ToInt32() 281Toolbox 17ToolStrip 273ToShortDateString() 378ToString() 230Trennzeichen 215Trim() 214TrimEnd() 214TrimStart() 214Truncate() 255Try 106

U

Übergabeper Referenz 156per Wert 155

Überladen 186Überschreiben 202Überwachungsfenster 111Uhrzeit 227, 228

berechnen 230UID 349Umwandlung

in ganze Zahl 281in Zahl 60

Und-Operator 49Ungleich 48, 326Unterformular 125Untermenü 261Unterstrich 28, 326Until 82update 319, 324, 329

V

Validate() 373Validierung 371Value 61, 278, 299, 370ValueChanged 61values 330Variable 37

ausblenden 41Gültigkeitsbereich 37Kontrolle 111Name 37öffentliche 127Startwert 42

vbCrLf 33Verbindung, Datenbank 319Vererbung 195Vergleichsoperator 326Verknüpfung 303

erstellen 315, 317Verzeichnis

Datei- und Verzeichnisliste 247Dateiliste 247ermitteln 247Existenz 247Information über 247setzen 247wählen, Dialog 291wechseln 253

Verzweigung 62äußere 64innere 64

Vieleck 392Vielgestaltigkeit 201Visible 116Vista 319, 435Visual Basic 2010 Express Edition 15Vokabel-Lernprogramm 415

W

Wahrheitswert 71Webserver 361

lokaler 361WeekendDayStyle 379Werkzeugsammlung 17Wertebereich 40Werttyp 188where 325

1541.book Seite 466 Mittwoch, 5. Mai 2010 10:28 10

467

Index

While 82Width 30, 394With 85, 152Wochentag 228Write() 169, 236WriteLine() 169, 173, 236Wurzel 255

X

X 30XML-Datei 433Xor 49

Bit-Operator 270

Y

Y 30Year 228

Z

Zahl prüfen 246Zahlenauswahlfeld 61, 221

Zeicheneinzelnes 212prüfen 235

Zeichenkette 211durchsuchen 217einfügen 220ersetzen 225Länge 212löschen 221Teilzeichenkette 223trimmen 214zerlegen 215

Zeichnen 389dauerhaft 399

Zeichnung löschen 394Zeile lesen 235Zeilenumbruch 23

Regeln 27Zeit 227Zeitgeber 54Zeitintervall 230Zufallsgenerator 82, 132, 401, 415Zuweisung 24

1541.book Seite 467 Mittwoch, 5. Mai 2010 10:28 10