Jetzt lerne ich Visual C# 2012 *ISBN 978-3-8272

Werbung
Inhaltsverzeichnis
Vorwort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1
Ein wenig Theorie vorab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.1
1.2
1.3
Was ist ein Programm? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Wie wird ein Programm erstellt? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C#, IL-Code und JIT-Compiler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3.1 Erstellung und Ausführung von C#-Programmen . . . . . . . . . . . . . . . . . . . . . 1.3.2 Vorzüge des IL-Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.4 Das .NET Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.4.1 Die .NET-Initiative . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.4.2 Die Komponenten des .NET Frameworks . . . . . . . . . . . . . . . . . . . . . . . . . . 1.4.3 Framework, SDK und Bezugsquellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.5 Visual C# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.5.1IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.5.2RAD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.6Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.7 Fragen und Antworten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.8Übungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
21
23
25
25
26
28
29
31
32
33
34
35
37
37
38
Das erste Programm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
2.1
2.2
2.3
Am Anfang steht immer ein Projekt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.1 Übung 1: Ein eigenes Projekt anlegen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2 Übung 2: Das Projekt speichern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3 Übung 3: Das Programm ausführen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Quelltext – der erste Kontakt! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.1Program.cs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.2 Form1.cs und Form1.Designer.cs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.3 namespace und using . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Programmieren in der RAD-Umgebung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.1 Die RAD-Umgebung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.2 Komponenten aufnehmen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.3 Komponenten konfigurieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.4 Ereignisse bearbeiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.5 Eigenschaften zur Laufzeit ändern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.6 Die Eigenschaft Name . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
40
42
42
43
44
53
57
58
58
60
63
65
66
68
7
Inhaltsverzeichnis
2.4 Was tut sich auf der Festplatte? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.5 Anwendungen von außerhalb Visual C# aufrufen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.6Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.7 Fragen und Antworten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.8Übungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
68
69
71
71
72
C#-Grundkurs: Daten­verarbeitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
3.1Konsolenanwendungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
3.1.1 Das Grundgerüst . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
3.1.2 Konsolenanwendungen in Visual C# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
3.1.3 Konsolenanwendungen außerhalb von Visual C# ausführen . . . . . . . . . . . . . 76
3.2 Datentypen und Variablen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
3.2.1 Der »Wert« der Variablen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
3.2.2 Variablen bei der Definition initialisieren . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
3.2.3 Werte von Variablen abfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
3.2.4 Die elementaren Datentypen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
3.2.5Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
3.2.6Typumwandlung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
3.2.7 C# für Pedanten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
3.3 Variablen kontra Konstanten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
3.4Operatoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
3.4.1 Die verschiedenen Operatoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
3.4.2 Verwendung der trigonometrische Methoden . . . . . . . . . . . . . . . . . . . . . . . 98
3.4.3Division . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
3.5 Objekte und Klassen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
3.5.1 C# für Philosophen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
3.5.2 Klassen definieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
3.5.3 Mit Klassen programmieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
3.6Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
3.6.1 Arrays definieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
3.6.2 Auf Array-Elemente zugreifen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
3.6.3 Arrays initialisieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
3.7 Vordefinierte Klassen und Namespaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
3.8Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
3.9 Fragen und Antworten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
3.10Übungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
8
Inhaltsverzeichnis
4
C#-Grundkurs: Modularisierung und Programmsteuerung . . . . . . . . . . . . . . . 121
4.1
Modularisierung durch Klassen und Methoden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
4.1.1 Teilprobleme in Methoden implementieren I . . . . . . . . . . . . . . . . . . . . . . . . . 123
4.1.2 Teilprobleme in Methoden implementieren II . . . . . . . . . . . . . . . . . . . . . . . . 124
4.1.3 Teilprobleme in Klassen implementieren . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
4.1.4 Eigene Bibliotheken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
4.2Kontrollstrukturen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
4.2.1 Bedingungen: if-else . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
4.2.2 Bedingungen und boolesche Ausdrücke . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
4.2.3 Mehrfachbedingungen: switch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
4.2.4 Die Schleifen for, while und foreach . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
4.2.5 Schleifenvariablen und Abbruchbedingungen . . . . . . . . . . . . . . . . . . . . . . . . 141
4.2.6 Schleifen und Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
4.2.7 Zauber mit Schleifen, Zahlen und Kaninchen . . . . . . . . . . . . . . . . . . . . . . . . 143
4.2.8 Änderung des Programmflusses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
4.3 Fehlerbehandlung durch Ausnahmen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
4.3.1 Ausnahmen abfangen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
4.3.2 Mehrere catch-Blöcke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
4.3.3 Die Ausnahme-Parameter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
4.3.4 Eigene Ausnahmen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
4.4Selbstkontrolle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
4.5Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
4.6 Fragen und Antworten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
4.7Übungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
5
C#-Grundkurs: OOP-Vertiefung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
5.1
Statische und nicht-statische Klassenelemente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
5.1.1 Nicht-statische Elemente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
5.1.2 Statische Elemente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
5.2Methoden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
5.2.1 Definition von Methoden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
5.2.2 Rückgabewerte von Methoden – return . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
5.2.3Parameterübergabe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
5.2.4Überladung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
5.3 Zugriff und Zugriffbeschränkung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
5.3.1Gültigkeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
5.3.2 Lokale Variablen und Verdeckung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
5.3.3 Die Zugriffsmodifizierer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
5.4Eigenschaften . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
9
Inhaltsverzeichnis
5.5Vererbung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
5.5.1 Der grundlegende Mechanismus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
5.5.2 Der Zugriffsmodifizierer protected . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
5.5.3 Aufruf des Basisklassenkonstruktors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
5.5.4 Verbergen und Überschreiben geerbter Methoden . . . . . . . . . . . . . . . . . . . 186
5.6Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
5.7 Fragen und Antworten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
5.8Übungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
6
C#-Grundkurs: OOP-Ausblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
6.1Polymorphie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
6.2Object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
6.2.1 ToString() überschreiben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
6.2.2Boxing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
6.3 Schnittstellen (Interfaces) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
6.3.1 Schnittstellen definieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
6.3.2 Schnittstellen implementieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
6.4Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
6.5 Fragen und Antworten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
6.6Übungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
7
C#-Grundkurs: E/A und Dateien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
7.1
Schreiben auf die Konsole . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
7.1.1 Write(), WriteLine() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
7.1.2 Formatierte Ausgabe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
7.2 Schreiben in Dateien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
7.3 Lesen von Tastatur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
7.4 Lesen aus Dateien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
7.5Befehlszeilenargumente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
7.6Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
7.7 Fragen und Antworten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213
7.8Übungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
8
C#-Grundkurs: Nützliche .NET-Klassen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
8.1
Datum und Uhrzeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
8.1.1 Datum und Uhrzeit ermitteln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
8.1.2 Datums- und Zeitangaben manipulieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
8.1.3 Datums- und Zeitangaben ausgeben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
8.1.4 Zeitspannen messen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
8.2Zufallszahlen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
10
Inhaltsverzeichnis
8.3
Die Auflistungsklassen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
8.3.1Historisches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
8.3.2 Die Auflistungen im Vergleich . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
8.3.3ArrayList . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
8.3.4List<T> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226
8.3.5 Dictionary<TKey, TValue> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
8.3.6Stack<T> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
8.4Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
8.5 Fragen und Antworten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
8.6Übungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
9
Ein Rundgang durch Visual C# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
9.1Tour-Start . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
9.2 Die Projektverwaltung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
9.2.1 Vom Nutzen der Projektverwaltung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
9.2.2 Ein Projekt anlegen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
9.2.3 Projekte speichern, schließen und öffnen . . . . . . . . . . . . . . . . . . . . . . . . . . 234
9.2.4 Mit Projekten arbeiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
9.2.5 Projekteigenschaften festlegen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
9.2.6Projektmappen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
9.3 Der Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
9.3.1Syntax-Hervorhebung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
9.3.2 Automatische Einrückung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
9.3.3IntelliSense . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
9.3.4 Zusammenarbeit mit Compiler und Debugger . . . . . . . . . . . . . . . . . . . . . . . 246
9.3.5 Weitere Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
9.4 Der Windows Forms-Designer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
9.4.1 Komponenten hinzufügen und löschen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
9.4.2 Komponenten auswählen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
9.4.3 Komponenten dimensionieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
9.4.4 Komponenten ausrichten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
9.4.5 Komponenten kopieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
9.4.6 Das Eigenschaftenfenster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
9.5 Der Compiler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249
9.6 Der Debugger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
9.6.1 Fehler und Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
9.6.2 Ablauf von Debug-Sitzungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
9.6.3 Vorbereitungen zum Debuggen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
9.6.4 Programm in Debugger laden und starten . . . . . . . . . . . . . . . . . . . . . . . . . 253
9.6.5 Programm anhalten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
9.6.6 Programm schrittweise ausführen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
9.6.7 Die Debug-Fenster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
11
Inhaltsverzeichnis
9.7Hilfe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
9.7.1 Die Online-Hilfe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
9.7.2 Die lokale Hilfe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
9.8Konfiguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
9.9Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
9.10 Fragen und Antworten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
9.11Übungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
10 Windows-Anwendungen: Formulare und Steuerelemente . . . . . . . . . . . . . . . . . 263
10.1 Was sind Windows-Anwendungen? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
10.2 Fenster, Hauptfenster und Formulare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
10.2.1 Nachgefragt, was ist eigentlich ein Fenster? . . . . . . . . . . . . . . . . . . . . . . . 266
10.2.2 Das Fenster konfigurieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
10.2.3Anwendungssymbol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
10.3Steuerelemente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
10.3.1 Programmieren mit Steuerelementen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
10.3.2Beschriftungsfelder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
10.3.3Schaltflächen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 279
10.3.4Kontrollkästchen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
10.3.5 Optionsfelder und GroupBox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
10.3.6Eingabefelder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
10.3.7Listenfelder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
10.3.8Kombinationsfelder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
10.3.9 Weitere Steuerelemente und weitere Informationen . . . . . . . . . . . . . . . . . . . 286
10.4Ereignisbehandlung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
10.4.1 Ereignisbehandlung einrichten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
10.4.2 Welches Ereignis soll ich abfangen und bearbeiten? . . . . . . . . . . . . . . . . . . 287
10.5Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
10.6 Fragen und Antworten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
10.7Übungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
11 Windows-Anwendungen: Menüs und Symbolleisten . . . . . . . . . . . . . . . . . . . . . . 291
11.1Menüleisten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
11.1.1 Aufbau einer Menüleiste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
11.1.2 Ereignisbehandlung für Menüelemente . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
11.1.3 Menüelemente konfigurieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
11.2Symbolleisten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
11.3Kontextmenüs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
11.4Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300
11.5 Fragen und Antworten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300
11.6Übungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300
12
Inhaltsverzeichnis
12 Windows-Anwendungen: Dialogfelder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
12.1 Was sind Dialogfelder? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
12.2 Dialogfelder aufbauen und konfigurieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302
12.3 Dialogfelder erzeugen und anzeigen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
12.4 Einstellungen aus Dialogfeldern abfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
12.5Standarddialoge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
12.5.1Meldungsfenster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
12.5.2 Dateien öffnen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
12.6Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
12.7 Fragen und Antworten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
12.8Übungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
13 Windows-Anwendungen: Grafik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
13.1 Das Arbeitsmaterial des Künstlers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
13.1.1 Text zeichnen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
13.1.2 Rekonstruktion von Zeichnungen – Das Paint-Ereignis . . . . . . . . . . . . . . . . . 315
13.1.3 Zeichenmethoden – Graphics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316
13.1.4 Pinsel, Stift und Schrift . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
13.2 In Panels zeichnen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
13.2.1 Die Benutzeroberfläche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
13.2.2 Die Auswahl der Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320
13.2.3 Die Funktionen zeichnen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320
13.3Freihandlinien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322
13.3.1 Konzept für Freihandlinien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322
13.3.2 Eigene Graphics-Objekte erzeugen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323
13.4 Bilder anzeigen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326
13.4.1 Bilder aus Bilddateien laden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326
13.4.2 Bilder anzeigen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326
13.4.3 Ein Bildbetrachter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327
13.5Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
13.6 Fragen und Antworten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
13.7Übungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330
14 Datenbankzugriff (ADO.NET) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331
14.1 Relationale Datenbanken und SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331
14.2SQL-Grundlagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
14.3 Zugriff auf eine SQL Server-Datenbank . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335
14.3.1 Die Datenbank . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336
14.3.2 Die Anwendung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
13
Inhaltsverzeichnis
14.4 Zugriff auf eine Microsoft Access-Datenbank . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
14.4.1 Projekt kopieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
14.4.2 Datenbank erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
14.4.3 Quelltext für Datenbankzugriff anpassen . . . . . . . . . . . . . . . . . . . . . . . . . . . 349
14.5 Datenbankanwendungen mit voller Visual C#-Unterstützung . . . . . . . . . . . . . . . . . . . 350
14.6 Datenbankanwendungen in Eigenbau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
14.6.1 Das Ausgangs-Projekt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
14.6.2 Das Zusammenspiel der Datenbankklassen . . . . . . . . . . . . . . . . . . . . . . . . 353
14.6.3 Der Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354
14.7Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358
14.8 Fragen und Antworten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358
14.9Übungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359
15Bildschirmschoner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361
15.1 Was unterscheidet Bildschirmschoner von anderen Windows-Anwendungen? . . . . . . . 361
15.2 Ein Ticker als Bildschirmschoner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
15.2.1 Konfiguration des Fensters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
15.2.2 Beenden bei Mausklick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
15.2.3 Aufrufargumente auswerten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
15.2.4 Die Animation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365
15.2.5 Den Bildschirmschoner einrichten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368
15.3Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368
15.4 Fragen und Antworten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368
15.5Übungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368
16 Wie geht es weiter? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369
Anhang A: Lösungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371
Anhang B: Die CD zum Buch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381
B.1
B.2
Installation der Visual C# Entwicklungsumgebung . . . . . . . . . . . . . . . . . . . . . . . . . . . 381
Die Programmierbeispiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382
Anhang C: Unicode-Zeichen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385
Anhang D: Syntax-Referenz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387
D.1Schlüsselwörter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387
D.2 Elementare Typen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388
D.3Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389
D.4 Formatierung mit ToString() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389
D.5Operatoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391
D.6Ablaufsteuerung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392
14
Inhaltsverzeichnis
D.7Ausnahmebehandlung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394
D.8Enumerationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395
D.9Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395
D.10Schnittstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396
D.11Delegaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397
D.12Ereignisse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
D.13Strukturen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398
D.14Klassen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399
D.15Generika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401
Anhang E: Glossar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403
Stichwortverzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411
15
apitel,
in diesem K
Sie lernen
gt
jekt erzeu
neues Pro
•• wie ein
wird,
2 Das erste
Programm
engrundleg
sual C# die
Vi
in
ie
w
••
dowsr eines Win
de Struktu
,
s aussieht
Programm
ethode so
die Main()-M
•• warum
wichtig ist,
suung von Vi
RAD-Umgeb
•• wie die
tioniert.
al C# funk
Nachdem Sie sich im vorangehenden Kapitel soviel Theorie zu Compilern, Interpretern und .NET anhören mussten, stürzen wir uns in diesem Kapitel gleich in die Praxis und erstellen das erste C#Programm; natürlich mit Unterstützung von Visual C#! Falls Sie noch nie in C# programmiert haben,
müssen Sie deswegen jetzt keine weichen Knie bekommen. Sie werden feststellen, dass wir für die
erste Version des Programms keine einzige Zeile Code selbst aufsetzen müssen. Das erledigt alles
Visual C# für uns!
2.1
Am Anfang steht immer ein Projekt
Legen wir also los. Sie sitzen entspannt vor Ihrem PC und sehen hoffentlich eine Windows-Oberfläche,
beispielsweise Windows XP oder Windows Vista. Starten Sie Visual C# und warten Sie ein oder zwei
Minuten, bis auf dem Bildschirm wieder Ruhe eingekehrt ist.
Sie sehen nun die IDE der Visual C# Express Edition, die Ihnen bereits in Kapitel 1.5 kurz vorgestellt
wurde. Um in dieser IDE ein Programm zu schreiben und zu erstellen, müssen Sie für das Programm
zuerst ein Projekt anlegen.
Wozu ein Projekt?
Visual C# verwaltet Programme in Projekten. Am Anfang werden Ihre Programme meist nur aus einer
einzigen Quelltextdatei bestehen. Doch mit der Zeit werden Ihre Programme ambitionierter und umfangreicher werden. Dann beginnen Sie den Quelltext auf mehrere Dateien zu verteilen, Ressourcen
wie Bilder oder Sounddateien einzubinden und mit speziellen Optionen in die Arbeit des Compilers
einzugreifen. Um mit dieser Vielzahl von Dateien und Konfigurationsoptionen besser umgehen zu können, werden in Visual C# alle Dateien eines Programms zu einem Projekt zusammengefasst. Die Informationen über ein Projekt legt Visual C# in einer eigenen Datei ab, der Projektdatei (Endung .csproj).
39
Kapitel
2
Das erste Programm
2.1.1 Übung 1: Ein eigenes Projekt anlegen
Abbildung 2.1: Neues Projekt anlegen
1. Rufen Sie im Menü Datei den Eintrag Neues Projekt auf (oder klicken Sie in der Startseite auf den
Link Neues Projekt). Es erscheint ein Dialogfeld mit den von Visual C# bereits zur Verfügung gestellten Vorlagen.
2. Wählen Sie die von Ihnen gewünschte Vorlage – in unserem Fall wäre dies die Vorlage Windows
Forms-Anwendung. Öffnen Sie dazu links die Kategorie Vorlagen/Visual C# und wählen Sie dann
rechts die Vorlage aus.
3. Geben Sie Ihrem Projekt unten in dem Eingabefeld einen Namen (beispielsweise ErstesProjekt).
4. Klicken Sie auf die Schaltfläche Durchsuchen und wählen Sie das Verzeichnis aus, unter dem das
Projektverzeichnis angelegt werden soll.
5. Deaktivieren Sie dann noch die Option Projektmappenverzeichnis
Kapitel 9.2.6) und ...
6. ... klicken Sie zum Schluss auf OK.
40
erstellen
(mehr zu dieser Option in
Am Anfang steht immer ein Projekt
Abbildung 2.2: Das neu angelegte Projekt
Im Arbeitsbereich von Visual C# erscheint ein Register namens Form1.cs [Entwurf], das Ihr zu füllendes
Anwendungsfenster enthält.
Im Projektmappen-Explorer wird das Projekt ErstesProjekt als übergeordneter fettgedruckter Knoten
mitsamt seinen Dateien aufgeführt. Unser Projekt enthält:
• Properties (Dahinter verbergen sich Konfigurationsdateien, die weitgehend automatisch von Visual
C# verwaltet werden.)
• Verweise (Unter diesem Knoten werden die Bibliotheks-Assemblies aufgelistet, die die Anwendung
verwendet. Visual C# bindet vorsorglich gleich die wichtigsten und am häufigsten benötigten Assemblies mit ein.)
• App.config (Eine weitere Konfigurationsdatei, die von der Common Language Runtime ausgewertet wird und für uns nicht weiter von Bedeutung ist.)
• Quelltextdateien
Uns interessieren natürlich vor allem die Quelltextdateien, denn in ihnen steht der auszuführende Code.
Wenn Sie ein Projekt für eine Windows Forms-Anwendung anlegen, erzeugt Visual C# automatisch drei
.cs-Dateien und verteilt auf diese ein Codegerüst, das direkt ausgeführt und vom Entwickler beliebig
ausgebaut werden kann.
• Program.cs. In dieser Quelltextdatei steht der Start-Code, mit dem die Ausführung der Anwendung
beginnt. Die wichtigste Aufgabe dieses Codes ist es, das Hauptfenster der Anwendung zu erzeugen und die Kommunikation zwischen der Anwendung und dem Anwender (vermittelt über das
Betriebssystem, welches Maus und Tastatur überwacht) herzustellen.
41
Kapitel
2
Das erste Programm
• Form1.cs. In dieser Datei wird das Fenster der Anwendung definiert. Wenn Sie eigenen Code für
das Fenster schreiben oder hinzufügen möchten, ist diese Datei der richtige Ort.
• Form1.Designer.cs. Diese Datei, deren Knoten sich unter dem Knoten Form1.cs verbirgt, beinhaltet weiteren Code für das Fenster. Allerdings wird dieser Code vom Windows Forms-Designer von
Visual C# verwaltet. Wenn Sie wissen, was Sie tun, können Sie diesen Code auch selbst bearbeiten, aber grundsätzlich – und ganz besonders für Anfänger – gilt: Finger weg von dieser Datei!
Hinweis In der Visual C#-Programmierung werden Fenster häufig als Formulare bezeichnet. Der von
Visual C# automatisch vergebene Dateiname Form1.cs leitet sich also nicht von »Form« im Sinne von
Gestalt, sondern von »Form« als Kürzel für »Formular« ab.
Tipp Wenn Sie im Projektmappen-Explorer auf den Knoten einer Quelltextdatei, beispielsweise Program.
cs, doppelklicken, wird der zugehörige Quelltext zur Bearbeitung in den Editor geladen. Für die Datei des
Fensters (in unserem Beispiel Form1.cs) wird allerdings statt des Quelltextes eine grafische Simulation
des Fensters angezeigt. Um den zugehörigen Quelltext anzuzeigen, klicken Sie mit der rechten Maustaste in das Fenster und rufen im Kontextmenü den Befehl Code anzeigen auf. Alternativ können Sie den
Dateiknoten auch mit der rechten Maustaste anklicken und so ein Kontextmenü aufklappen, in dem Sie
einen der Befehle Öffnen oder Code anzeigen auswählen. Über die Register oberhalb des Arbeitsbereichs
können Sie schnell zwischen mehreren gleichzeitig geöffneten Dateien hin und her wechseln.
2.1.2 Übung 2: Das Projekt speichern
Während Sie an einem Projekt arbeiten, sollten Sie es hin und wieder mal komplett speichern. Alles,
was Sie dazu tun müssen, ist, den Befehl Alle speichern im Menü Datei aufzurufen (oder die Tastenkombination Ÿ+Á+S zu drücken).
7. Speichern Sie jetzt einfach einmal zur Übung das Projekt.
2.1.3 Übung 3: Das Programm ausführen
Bevor wir das Programm weiter bearbeiten, wollen wir es einmal ausführen lassen.
8. Rufen Sie zuerst im Menü Erstellen den Eintrag Projektmappe
Ï.
erstellen
auf, bzw. klicken Sie auf
Visual C# nimmt nun den Inhalt der Quelltextdateien und lässt ihn vom Compiler in IL-Code übersetzen.
Stößt der Compiler dabei auf syntaktische Fehler im Quelltext, werden diese in einem eigenen Fenster
unterhalb des Arbeitsbereichfensters angezeigt. In dem von Visual C# erstellten Codegerüst dürften
allerdings keine Fehler enthalten sein.
Wenn sich Ihr Programm problemlos kompilieren lässt, sollte unten in der Statusleiste die Meldung
»Erstellen erfolgreich« erscheinen.
42
Quelltext – der erste Kontakt!
9. Anschließend können Sie das Programm mit Debuggen/Debugging starten Í oder Debuggen/Starten
ohne Debugging Ÿ+Í ausführen.
Im Hintergrund übergibt Visual C# den kompilierten IL-Code zur Ausführung an die CLR des .NET
Frameworks. Auf Ihrem Bildschirm sollte nun ein Anwendungsfenster eingeblendet werden, das die
Titelleiste Form1 besitzt. Dies ist Ihr erstes C#-Programm!
Abbildung 2.3: Unser erstes C#-Programm
Wenn die erste Begeisterung abgeklungen ist, fällt Ihnen sicherlich auf, dass dieses Programm nicht
besonders aufregend ist. Es macht nichts und zeigt nichts an. Aber immerhin kann man schon per
Maus das Fenster schließen oder es minimieren bzw. maximieren!
Hinweis Für viele Menübefehle gibt es auch ein Symbol zum schnelleren Zugriff; zum Ausführen können
Sie beispielsweise das nach rechts gerichtete Starten-Dreieck in der Symbolleiste anklicken. Wenn Sie
auch die Befehle aus dem Erstellen-Menü über Symbole aufrufen möchten, lassen Sie die Symbolleiste
Erstellen anzeigen (Aufruf über Ansicht/Symbolleisten/Erstellen).
2.2
Quelltext – der erste Kontakt!
Bevor es weitergeht und wir das Programm aus dem vorangehenden Abschnitt mithilfe der RAD-Programmierung ein wenig ausschmücken, sollten wir es nicht versäumen, einen Blick auf den Quelltext
zu werfen, den Visual C# für uns erzeugt hat.
Bei diesem Code handelt es sich um das sogenannte Anwendungsgerüst, das Visual C# jedes Mal
anlegt, wenn Sie sich im Dialogfeld zu dem Befehl Datei/Neues projekt für eine Windows-Anwendung
entscheiden. Es ist allerdings keineswegs das einzige mögliche Anwendungsgerüst. Konsolenanwendungen, Klassenbibliotheken etc. sind beispielsweise C#-Projekte, die über eigene, anders aufgebaute
Anwendungsgerüste verfügen.
Wenn wir uns im Folgenden das von Visual C# vorgegebene Codegerüst für Windows-Anwendungen etwas näher ansehen, wollen wir uns dabei mit einigen grundlegenden Elementen der C#-Syntax vertraut
43
Stichwortverzeichnis
\ (Escape-Zeichen) 83
\a (Signalton) 83
\n (Zeilenumbruch) 83
.NET 29
.NET Framework
– Bezugsquellen 33
– Bibliotheken 32
– Common Language Runtime (CLR) 31
– JIT-Compiler 26
– Speicherverwaltung 28
– Verfügbarkeit 27, 28
– Website 27, 32
A
abstract 403
Access 348
– 2003 349
– 2010 349
ADO.NET. Siehe Datenbanken
Algorithmus 22
Animation 365
– Flackern vermeiden 367
– Ticker 365
– Zeitgeber 366
Anweisungen 93
Anwendungen. Siehe Programme
Anwendungsgerüst
– Konsolenanwendungen 74
– Windows-Anwendungen 41
Anwendungssymbole 273
– Abmaße 273
– Bildtypen 273
– einrichten 274
– erstellen 273
– Farben 273
– Grafikeditor 273
Arbeitsspeicher 78
Array (Klasse) 115
ArrayList (Klasse) 223
Arrays 113
– als Parameter 167
– definieren 113
– dynamische 223
– indizierter Zugriff 113
– initialisieren 115
– in Schleifen bearbeiten 142
– sortieren 199
– von Objekten 114, 372
Assemblies 30
Auflistungsklassen 221
– ArrayList 223
– Dictionary<T, U> 228
– List<T> 226
– Stack<T> 229
– Vergleich 222
Ausdrücke 97
Ausführungsgeschwindigkeit 26
Ausgabe 203. Siehe E/A-Ausgabe
Ausnahmen 145
– abfangen 145
– auslösen 150, 151
– Ausnahme-Objekte 150
– catch-Blöcke 146
– eigene 151
– finally-Block 347
– mehrere catch-Blöcke 149
– Parameter 150
– try-Block 146
– Typumwandlung 145
– vordefinierte Klassen 149
AutoSize (Steuerelemente) 64, 276
B
BackColor (Fenster) 60, 270
BackColor (Steuerelemente) 64
BackgroundImage (Fenster) 271
BackgroundImageLayout (Fenster) 272
Backslash-Zeichen 83
base 186, 189
Batch-Dateien 211
Befehlszeilenargumente
– auswerten 211
– Bildschirmschoner 363
– in Visual C# 239
– Konsole 211
– Leerzeichen 213
Beispiele, auf Website zum Buch 382
Benutzereingaben
– Ausnahmebehandlung 146
– Typumwandlung 91
Beschriftungsfelder 60, 276
– Größenanpassung 64, 276
– Text 64
Bezeichner 93, 106
Bibliotheken
– eigene 130
411
Stichwortverzeichnis
– .NET Framework 32
– Testanwendung 132
– verfügbar machen 133
Bilder 326
– Anwendungssymbol 273
– anzeigen 326
– Größenanpassung 272
– laden 326
Bildschirmschoner 361
– Aufrufargumente 363
– beenden 363
– Dateiendung 361
– Fenster 362
– installieren 361
– testen 362
Binärdarstellung 77
Binding (Klasse) 356
BindingNavigator (Klasse) 356, 357
BindingSource (Klasse) 353, 356
Bitmap (Klasse) 326
Bogenmaß 98
bool 81
break 144
Brush (Klasse) 318
Build-Konfigurationen 238
Button (Klasse) 65, 279
byte 81
C
C#
– Auflistungsklassen 221
– Ausführungsgeschwindigkeit 26
– Ausnahmen 145
– Compiler 25
– Datentypen 78, 81
– Ein- und Ausgabe (E/A) 203
– Generika 221, 227
– Groß- und Kleinschreibung 93
– IL-Code 25
– JIT-Compiler 26
– Klassen 101
– Kommentare 46
– Kontrollstrukturen 134
– Namespaces 116
– .NET Framework 27, 28
– Plattformunabhängigkeit 27
– Schlüsselwörter 387
– Sicherheit 28
– Speicherbereinigung 113
– Syntax-Referenz 387
– Variablen 77, 78
case 138
Casting 93
catch 146
412
char 81
CheckBox (Klasse) 280
class 102
Clear() (Graphics) 316, 324
Click-Ereignis (Button) 65, 279
Click-Ereignis (Steuerelemente) 288
Clientbereich (von Fenstern) 270
ClientSize (Fenster) 327
Close() (Fenster) 296
Close() (SqlConnection) 346
Close() (SqlDataReader) 346
ColorDialog (Klasse) 308
Color (Klasse) 270
ComboBox (Klasse) 285
CommonDialog (Klasse) 308
Common Language Runtime (CLR) 31
CompareOrdinal() (string) 85
Compare() (string) 85
CompareTo() (IComparable) 199
Compiler 22, 249
– Build-Konfigurationen 238
– csc 25
– Fehlermeldungen 51, 250
– JIT-Compiler 26
– Visual C# 33
const 94
Container
– Auflistungsklassen 221
– Komponenten 264
ContextMenuStrip (Steuerelemente) 299
continue 144
ControlBox (Fenster) 268
Control (Klasse) 275
Controls (Steuerelemente) 275, 278, 281
Convert (Klasse) 89
Copy() (TextBox) 296
Cos() (Math) 97
CreateGraphics() (Steuerelemente) 323
csc (Compiler) 25
Cut() (TextBox) 296
D
DataSet (Klasse) 350, 353, 355
Dateien
– Ausgabe in Datei 206
– Bilddateien 326
– Dateiende feststellen 213
– kopieren 377
– Lesen aus Datei 209
– öffnen 309
– Öffnen-Dialog 309
– speichern 310
– StreamReader (Klasse) 209
– StreamWriter (Klasse) 206
– Zeichencodierung 211
Datenbanken 331
– ADO.NET 358
Stichwortverzeichnis
– Assistenten für Datenquellen 350
– Datensätze 332
– Datensätze abfragen 345
– Datensätze ändern 334, 350, 352
– Datensätze durchlaufen 347, 351
– Datensätze einfügen 333, 340, 351, 357
– Datensätze löschen 334, 351, 352, 357
– Datensätze speichern 351, 352, 357
– Datensätze suchen 335
– DBMS 331
– Indizes 332
– Microsoft Access 348
– Microsoft Access 2003 349
– Microsoft Access 2010 349
– Modelle
– mit DataSet 353
– mit Reader 345
– Primärschlüssel 332
– relationale Datenbanken 332
– SELECT-Befehl 335
– SQL 333
– SQL Server 335
– Tabellen 332
– Tabellen anlegen 333
– Verbindung herstellen 344, 358
Datenbank-Explorer 336
Datentypen 78, 81
– Arrays 113
– bool 81
– byte 81
– char 81
– double 81
– float 81
– int 81
– Klassen 103
– Literale 94
– long 81
– object 194, 198
– Schnittstellen 198
– short 81
– string 85
– Strukturen 408
– Typidentifizierung 202
– Typumwandlung 89
– Wertebereiche 82
DateTime (Klasse) 215
Datum 215
– ausgeben 217
– DateTime (Klasse) 215
– ermitteln 215
– Kalender 218
– manipulieren 216
Debugger 251
– Anzeigefenster 256
– Haltepunkte 255
– optimal unterstützen 253
– Programm anhalten 254
– Programm laden 253
– Programm schrittweise ausführen 256
default 138
Dekrement 96
Dialogfelder 301
– aufbauen 302
– auswerten 306
– Charakteristika 301
– Datei öffnen-Dialog 308, 309
– Datei speichern-Dialog 308
– Druck-Dialog 308
– erzeugen 304
– Farb-Dialog 308
– Font-Dialog 308
– konfigurieren 302
– Meldungsfenster 308
– modale 305
– nicht-modale 305
– Ordner-Dialog 308
– Programmstart 311
– Rahmenstil 302
– Schaltflächen 302
– Standarddialoge 308
– Startposition 303
DialogResult (Button) 302
Dictionary<T, U> (Klasse) 228
Dispose() (Graphics) 324
Division 100
Dock (Steuerelemente) 275
double 81
DoubleBuffered (Fenster) 367
DrawEllipse() (Graphics) 316
DrawImage() (Graphics) 316, 326
DrawLine() (Graphics) 316, 317
DrawPolygon() (Graphics) 316, 317
DrawRectangle() (Graphics) 316
DrawString() (Graphics) 314, 317
DropDownStyle (ComboBox) 285
E
E/A-Ausgabe
– auf Konsole 80, 203
– formatiert 204
– Formatzeichen 205
– Genauigkeit 205
– in Dateien 206
– Platzhalter 204
– WriteLine() 203
E/A-Eingabe
– aus Datei 209
– Ausnahmebehandlung 146
– ReadLine() 208
– Typumwandlung 91
– von Tastatur 91, 208
Editor 243
– Einrückung 243
– Einzüge 262
413
Stichwortverzeichnis
– IntelliSense 244
– Syntax-Hervorhebung 243
– Zeilennummern 262
Eigenschaften 172
– berechnete 176
– get 174
– im Eigenschaftenfenster 59
– Nur-Lesen 176
– Nur-Schreiben 176
– ohne private-Feld 176
– private-Feld 174
– set 174
– zur Laufzeit ändern 66
Eigenschaftenfenster 59, 249
Einbettung 180
Eingabe 208. Siehe E/A-Eingabe
Eingabeaufforderung 76
Eingabefelder 282
– Bildlaufleisten 282
– markierter Text 282
– mehrzeilige 282
– Passwörter 283
– schreibgeschützte 282
– Text 282
– Validierung 282
– Zwischenablage 296
else 135
Enabled (Steuerelemente) 280
Endloschleifen 141
Ereignisbehandlung 286
– Auswahl eines Ereignisses 287
– Ereignisbehandlungsmethoden 286
– Ereignis-Salven 287
– Ereignisse 286
– in Visual C# 286
– Mausereignisse 287
– Menüs 295
– Parameter 288
– Symbolleisten 298
Ereignisse 65
– Behandlungsmethoden 66
– Click 65, 279, 288
– im Eigenschaftenfenster 65
– KeyDown 363
– Maustasten 322
– MouseDown 287, 363
– MouseEnter 278
– MouseLeave 278
– MouseMove 322
– MouseUp 287
Escape-Sequenzen 83
Exception (Klasse) 150, 151
ExecuteNonQuery() (SqlCommand) 345
ExecuteReader() (SqlCommand) 345
Exp() (Math) 97
414
F
Farben
– Color (Klasse) 270
– Hintergrundfarbe 270
– RGB-Farben 271
– Vordergrundfarbe 302
Fehlerbehandlung 145. Siehe Ausnahmen
Felder 50
Fenster 264, 265
– Anwendungssymbol 273
– anzeigen 266
– Clientbereich 270
– Controls-Feld 275
– Dialogfelder 301
– erzeugen 266
– Farben 270
– Form (Klasse) 265
– Größe 268
– Größe fixieren 268
– Hauptfenster 49, 266
– Hintergrundbild 271
– Hintergrundfarbe 60, 270
– in Taskleiste 269, 362
– konfigurieren 267
– maximieren 362
– Position 268
– Rahmen 269
– Rahmenstil 269
– schließen 296
– Schriftart 64
– Show() 266
– Startposition 268, 379
– Systemmenü 268
– Titel 59, 268
– Titelleiste 268
– Überlappung 269
– verbergen 311
FillEllipse() (Graphics) 317
FillPolygon() (Graphics) 317
FillRectangle() (Graphics) 317
finally 347
FlatStyle (Button) 279
float 81
FolderBrowserDialog (Klasse) 308
FontDialog (Klasse) 308
Font (Klasse) 318
Font (Steuerelemente) 64
for 139
foreach 140
ForeColor (Steuerelemente) 275, 302
FormatException 147
formatierte Ausgabe 204
Format-Menü 60
Formatzeichen 205
FormBorderStyle (Fenster) 269, 302
Form (Klasse) 265
Stichwortverzeichnis
Formulare 42. Siehe Fenster
Freihandlinien 322
FromArgb() (Color) 271
G
Garbage Collection 113
Generika 221, 227
get 174
Glossar 403
Grafik 313
– Animation 365
– Arbeitsmaterial 313
– Bilddateien 326
– Farben 271
– Freihandlinien 322
– Graphics (Klasse) 314, 316
– Graphics-Objekte selbst erzeugen 323
– Linienbreite 318
– Paint-Ereignis 313, 315
– Panel-Leinwände 319
– Pinsel (Brush) 318
– Rekonstruktion 315
– Schrift (Font) 318
– Stift (Pen) 318
– Text zeichnen 314
– Zeichenfläche 313
– Zeichenmethoden 313, 316
Graphics (Klasse) 314, 316
Graphics (PaintEventArgs) 314
Gregorianischer Kalender 218
GroupBox (Klasse) 281
Gruppenfelder 281
GUI 73. Siehe Benutzeroberflächen
Gültigkeitsbereiche 169
H
Hauptfenster 49
Height (Steuerelemente) 268
HelpButton (Fenster) 268
Hide() (Cursor) 362
Hide() (Fenster) 311
Hilfe (Visual C#) 258
I
IComparable 199
Icon 273. Siehe Anwendungssymbole
if 135
IL-Code 25
Image (Button) 279
in 141
Initialisierung
– Arrays 115
– Variablen 80
Inkrement 96
Instanzbildung 109
Instanzen. Siehe Objekte
Instanzvariablen 104, 158
int 81
Integrierte Entwicklungsumgebung (IDE) 34
IntelliSense 244
interface 198
Interfaces. Siehe Schnittstellen
internal 171
internal protected 172
Interpreter 24
InvalidCastException 202
is (Operator) 202
Items (ListBox) 283
J
JIT-Compiler 26
K
Kalender 218
Kellerautomaten 229
KeyDown-Ereignis 363
Klassen 45
– abgeleitete Klasse 54
– abstrakte 403
– Arrays 114, 115, 372
– Auflistungsklassen 221
– Ausnahme-Klassen 151
– base 186, 189
– Basisklasse 54, 177
– Basisklassenkonstruktor 184
– class 102
– Daten schützen 171
– definieren 103
– Eigenschaften 172
– Einbettung 180
– Ersatzkonstruktor 108
– Felder 50, 104
– generische 226
– Instanzen bilden 109
– Instanzvariablen 104, 158
– Klassenansicht 236
– Klassenvariablen 160
– Konstruktoren 55, 108
– Methoden 46, 105, 162
– Methoden überladen 167
– Methoden überschreiben 187
– Namespaces 116
– new (Objekterzeugung) 110
– new (Verdeckung) 186
– Object 194
– partial 55
– protected 182
– public 55
– Standardkonstruktor 108
– static 157
– this 159
– Vererbung 54, 177
– Zugriffsmodifizierer 170, 171
Klassenansicht 236
415
Stichwortverzeichnis
Klassenvariablen 160
Kombinationsfelder 285
Kommentare 46
Komponenten 37, 59
– aufnehmen 60
– ausrichten 248
– auswählen 247
– Controls-Feld 275
– Ereignisse 65
– Größe festlegen 247
– Hintergrundfarbe 64
– hinzufügen 246
– instanzieren 62
– konfigurieren 63
– kopieren 248
– löschen 246
– Name 68
– positionieren 64
– Schriftart 64
Konfiguration
– Projekte 236
– Visual C# 261
Konsole 76
Konsolenanwendungen
– Ausgaben 80, 203
– automat. Schließen verhindern 75
– Befehlszeilenargumente 211
– Benutzereingaben 91
– starten (unter Windows) 76
Konstanten 94
– const-Variablen 94
– Literale 94
– PI 100
– Strings 82
Konstruktoren 55, 108
– Basisklassenkonstruktor 184
– Ersatzkonstruktor 108
– Standardkonstruktor 108, 119
Kontextmenüs 299
Kontrollkästchen 280
– Text 280
– Zustand 280
Kontrollstrukturen 134
– Abbruchbedingungen 141
– boolesche Ausdrücke 135
– break 144
– continue 144
– else 135
– Endlosschleifen 141
– foreach-Schleife 140
– for-Schleife 139
– if 135
– Iteration abbrechen 144
– Schleifen 139
– Schleifenvariablen 139
– switch 138
– Vergleichsoperatoren 136
416
– vorzeitig abbrechen 144
– while-Schleife 140
L
Label (Klasse) 60, 276
Layout-Designer. Siehe Designer
Left (Steuerelemente) 268
Length (Array) 115
Length (string) 86
ListBox (Klasse) 283
Listenfelder 283
– Auswahl abfragen 284
– Elemente hinzufügen 283
– Elemente löschen 285
– Elemente sortieren 283
List<T> (Klasse) 226
Literale 94
Location (Steuerelemente) 268
Logarithmus 97
Log() (Math) 97
Lokale 406
long 81
M
Main() 47
Maschinencode 21
mathematische Funktionen 98
Math (Klasse) 97
Mauszeiger 362
MaximizeBox (Fenster) 268
MeasureString() (Graphics) 367
Meldungsfenster 308
Meldungsschleife 48
Memberauswahl 67
Menüs 291
– Alt-Tastenkombinationen 296
– aufbauen 291
– Elemente deaktivieren 297
– Ereignisbehandlung 295
– Kontextmenüs 299
– Menüelemente 291
– Menüleisten 291
– Systemmenü 268
– Tastaturkürzel 297
– Trennstriche 293
MenuStrip (Klasse) 291
MessageBox (Klasse) 308
Methoden 46, 105, 162
– aufrufen 111
– Datenaustausch 107
– definieren 106, 162
– lokale Variablen 107
– override 187
– Parameter 107, 163
– periodisch aufrufen 366
– return 163
– Rückgabewert 163
Stichwortverzeichnis
– Signatur 162
– statische 162
– trigonometrische 98
– überladen 167
– überschreiben 187
– virtual 187
– void 107, 163
– vorzeitig beenden 163
Microsoft Access 348
– 2003 349
– 2010 349
– auf Datenbank zugreifen 349
– Datenbank anlegen 348
MinimizeBox (Fenster) 268
Modularisierung 121
– durch Klassen 125
– durch Methoden 124
MouseClick-Ereignis 288
MouseDown-Ereignis 287, 363
MouseEnter-Ereignis 278
MouseLeave-Ereignis 278
MouseMove-Ereignis 322
MouseUp-Ereignis 287
Multiline (TextBox) 282
N
Namensgebung 93
Namespaces 116
– importieren 116
– using 116
Name (Steuerelemente) 68
NaN 147
Neue Zeile-Zeichen 83
new (Objekterzeugung) 49, 110
new (Verdeckung) 181, 186
NextDouble() (Random) 220
Next() (Random) 219
null 112
O
Object (Klasse) 194
Objekte 45
– Arrays 114, 372
– Instanzbildung 109
– Lebensdauer 113
– löschen 113
– null-Referenz 112
– Objektvariablen 112
– sortieren 199
– Speicherbelegung 110
– Zugriff auf Elemente 111
Objektorientierte Programmierung (OOP) 101
– Fehlerbehandlung mit Ausnahmen 145
– Kapselung 136
– Klassen 45, 102
– Objekte 102
– Polymorphie 191
– Schnittstellen 198
– Überladung 167
– Überschreibung 187
– Vererbung 54, 177
– Zugriffsmodifizierer 170
Objektvariablen 112
OleDbAdapter (Klasse) 353, 355
OleDbCommandBuilder (Klasse) 357
OleDbCommand (Klasse) 349
OleDbConnection (Klasse) 349
OleDbDataReader (Klasse) 349
OleDbException (Klasse) 349
OpenFileDialog (Klasse) 308, 309
Operatoren 95
– arithmetische 95
– Dekrement 96
– Division 100
– Inkrement 96
– is-Operator 202
– Modulo 373
– Priorität 97
– String-Konkatenation 85
– String-Vergleiche 85
– Typidentifizierung 202
– Typumwandlung 93
– Vergleiche 136
Optionsfelder 281
– Gruppierung 281
– Text 281
– Zustand 281
override 187
P
Paint-Ereignis 315
PaintEventArgs (Klasse) 314
Panel (Klasse) 313, 319
Parameter
– Arrays 167
– Referenztypen 163
– ref-Parameter 165
– Werttypen 163
partial 55
PasswordChar (TextBox) 283
Paste() (TextBox) 296
Peak() (StreamReader) 213
Pen (Klasse) 318
PI (Math) 100
Plattformunabhängigkeit 27
Platzhalter 204
Polymorphie 191
Potenz 97
Pow() (Math) 97
Primärschlüssel 332
PrintDialog (Klasse) 308
private 172
417
Stichwortverzeichnis
Program (Klasse) 44
Programme
– Algorithmus 22
– Arbeitsverzeichnis 239
– Assemblies 30
– ausführen 27
– Ausführungsgeschwindigkeit 26
– debuggen 251
– exe-Datei 69
– Konsolenanwendungen 73
– Main()-Methode 47
– Maschinencode 21
– Name der .exe-Datei 237
– starten (unter Windows) 69, 76
– Windows-Anwendungen 40, 263
Programmerstellung 23
– Ablauf 23
– in Visual C# 39
– ohne Visual C# 33, 37
Programmhighlights
– Aus Dateien lesen 210
– Bildbetrachter 327
– Bildschirmschoner 361
– Einarmiger Bandit 290
– Freihandlinien 322
– Funktionenplotter 319
– Höhenberechnung 99
– In Dateien schreiben 207
– Kaninchenrechner 143
– Kopieren 378
– Mehrwertsteuer 23
– Mitarbeiterverwaltung 109, 143, 190, 202
– Sparbuchverwaltung 128
– Texteditor 291, 309
– Ticker 365
Projekte 39, 233
– Abhängigkeiten 242
– anlegen 234
– auf der Festplatte 68
– ausführen 42
– Build-Konfigurationen 238
– für Bibliotheken 131
– für Konsolenanwendungen 74
– für Windows-Anwendungen 40
– Klassen hinzufügen 103
– kopieren 348
– neu anlegen 40
– öffnen 235
– Projektdatei 234
– Projekteigenschaften 237
– Projektmappen 239
– Projektverwaltung 233
– schließen 235
– speichern 42, 234
– Startprojekt 241
– testen 42
– Verweise 133, 236, 241
418
– Vorteile der Projektverwaltung 234
– Zuletzt geöffnete Projekte 262
Projektmappen 239
protected 172
public 55, 107, 171
Q
Quadratwurzel 98
QuickInfo 299
R
Radiant 98
RadioButton (Klasse) 281
Random (Klasse) 219
Rapid Application Development (RAD) 35, 58
ReadLine() (Console) 91, 208
ReadOnly (TextBox) 282
Read() (SqlDataReader) 345
ref 165, 166
Referenzen 110
Refresh() (Steuerelemente) 316
Remove() (ListBox) 285
return 163
RGB-Farben 271
Run() 48
S
SaveFileDialog (Klasse) 308
Schaltflächen 65, 279
– Bilder 279
– Click-Ereignis 65
– deaktivieren 280
– flache Darstellung 279
– für Dialogfelder 302
– Größe festlegen 279
– Titel 65, 279
Schleifen 139
Schlüsselwörter 93, 387
Schnittstellen
– definieren 198
– implementieren 199
Schriften 318
ScrollBars (TextBox) 282
Selbsttest 151
SelectedIndex (ListBox) 284
SelectedIndices (ListBox) 284
SelectedItem (ListBox) 284
SelectedItems (ListBox) 284
SelectedText (TextBox) 282
SelectionMode (ListBox) 284
set 174
short 81
ShortcutKeys (ToolStripMenuItem) 297
ShowDialog() 305
Show() (Fenster) 266, 305
ShowInTaskbar (Fenster) 269, 362
Signalton-Zeichen 83
Stichwortverzeichnis
Sin() (Math) 98
Sinus 98
Size (Steuerelemente) 268
SolidBrush (Klasse) 318
Sonderzeichen
– \n (Zeilenumbruch) 83
Sort() (Array) 199
Sorted (ListBox) 283
Sort() (ListBox) 283
Speicherbereinigung 113
Split() (string) 88
SQL 333
– CREATE TABLE 333
– DELETE 334
– INSERT 333
– SELECT 335
– UPDATE 334
SqlCommand (Klasse) 345
SqlConnection (Klasse) 345
SqlDataReader (Klasse) 345
SQL Server 335
– auf Datenbank zugreifen 342
– Datenbank anlegen 336
Sqrt() (Math) 98, 147
Stack<T> 229
Standarddialoge 308
Stapel 229
StartPosition (Dialogfelder) 303
StartPosition (Fenster) 268, 379
static 157
Steuerelemente 264, 275
– andocken 275
– Aussehen 275
– Beschriftungsfelder 60, 276
– Eigenschaften 275
– Eingabefelder 282
– einrichten 276
– Ereignisse 275
– Größe 275
– Gruppenfelder 281
– Hintergrundfarbe 270
– Kombinationsfelder 285
– Kontrollkästchen 280
– Listenfelder 283
– Methoden 275
– Optionsfelder 281
– Position 275
– Schaltflächen 65, 279
– Sonstige 286
– Vordergrundfarbe 302
Stream 408
StreamReader (Klasse) 209
StreamWriter (Klasse) 206
String (Klasse) 86
Strings 50, 82
– als Parameter 164
– Escape-Sequenzen 83
– \\ (Escape-Zeichen) 83
– in Großbuchstaben umwandeln 87
– in Kleinbuchstaben umwandeln 87
– + (Konkatenation) 85
– Konstanten 82
– kopieren 86
– Länge 86
– Literale 82
– Pixelgröße 367
– String-Klasse 85
– Tabulatoren 83
– Teilstring einfügen 87
– Teilstring ersetzen 87
– Teilstring löschen 87
– Teilstring suchen 87
– Typumwandlung 91
– umbrechen 84
– Variablen 85
– vergleichen 85
– Whitespace entfernen 88
– Zeilenumbruchzeichen 83
– zerlegen 88
Strukturen 408
Swapping 166
switch 138
Symbolleisten 297
– aufbauen 297
– Bilder 298
– Ereignisbehandlung 298
– QuickInfo 299
Syntax-Referenz 387
T
Tabulatorzeichen 83
Tan() (Math) 98, 100
Tastaturkürzel 297
Text
– Ausgabe auf Konsole 203
– Ausgabe in Datei 206, 309
– Ausgabe in Fenster 276, 282
– Bearbeiten in Fenster 282
– Einlesen über Fenster 282
– Einlesen von Datei 209, 309
– Einlesen von Konsole 208
– Pixelgröße 367
– Zeichencodierung 211
– zeichnen 313
Text (Button) 279
Text (Fenster) 59, 268
Text (Kontrollkästchen) 280
Text (TextBox) 282
TextAlign (Label) 64
TextBox (Klasse) 282
TextChanged-Ereignis 282
TextImageRelation (Button) 279
this 159
throw 151
419
Stichwortverzeichnis
Ticker 365
Tick-Ereignis (Timer) 366
Timer (Klasse) 366
TimeSpan (Klasse) 218
ToDouble() (Convert) 90, 91, 130, 145
ToInt32() (Convert) 90
ToLower() (string) 87
ToolStrip (Klasse) 297
ToolStripMenuItem (Klasse) 293
TooltipText (ToolStripButton) 299
TopMost (Fenster) 269, 362
Top (Steuerelemente) 268
ToString() (Object) 90, 195
ToUpper() (string) 87
TranslateTransform() (Graphics) 321
trigonometrische Funktionen 98
Trim() (string) 88
try 146
Typidentifizierung 202
Typumwandlung 89
– Ausnahmen 145
– Convert 89
– Division 100
– explizite 93
– implizite 92
– InvalidCastException 202
– Strings in Zahlen 91
– WriteLine() 89
– Zahlen 90, 92
U
Überladung 167
Überschreibung 187
Übung, im Internet 151
Uhrzeit 215
– ausgeben 217
– DateTime (Klasse) 215
– ermitteln 215
– manipulieren 216
Unicode 82, 385
using 116
V
Variablen 50, 78, 110
– const 94
– definieren 78
– Gültigkeitsbereich 169
– initialisieren 80
– Instanzvariablen 104, 158
– Klassenvariablen 160
– lokale 107
– Namensgebung 93
– Objektvariablen 112
– Parameter 107
– Schleifenvariablen 139
– schützen 171
– Strings 85
420
– Typumwandlung 89
– Verdeckung 169
– Wert 79
– Werte abfragen 80
– Werte zuweisen 79
– Zugriff steuern 171
Verdeckung 169
Vererbung 54, 177
– abgeleitete Klasse 177
– Basisklasse 177
– Basisklassenkonstruktor 184
– Basisklassenunterobjekte 181
– Einsatzgebiete 178
– Elemente verbergen 186
– kontra Einbettung 180
– Methoden überschreiben 187
– Object 194
– private Elemente 374
– protected 182
– Standardkonstruktor 374
– Syntax 177
– Zugriff auf überschriebene Methoden 189
– Zugriff auf verborgene Elemente 186
Vergleiche
– lexikografische 86
– Objekte von Klassen 199
– Sortieren 199
– Strings 85
virtual 187
Visible (Steuerelemente) 275
Visual C# 33
– Anwendungen testen 42
– Assistenten für Datenquellen 350
– Bibliotheken 131
– Compiler 249
– Datenbank-Explorer 336
– Debugger 251
– Editor 243
– Eigenschaftenfenster 59, 249
– Ereignisbehandlung 286
– Fenster andocken 59
– Hilfe 258
– IDE 34
– Installation 381
– Klassenansicht 236
– Konsolenanwendungen 73
– Memberauswahl 67
– Menü Format 60
– Projekte 40
– Projektverwaltung 233
– RAD-Umgebung 35, 58
– Startseite 34, 261
– Werkzeugkasten 58
– Windows-Anwendungen 40
– Windows Forms-Designer 58, 246
void 107, 163
Stichwortverzeichnis
W
Wachstumsprozesse 143
Werkzeugkasten 58
while 140
Whitespace 88
Width (Steuerelemente) 268
Windows
– Anwendungen starten 69
– Eingabeaufforderung 76
– Konsole 76
– Konsolenanwendungen starten 76
Windows-Anwendungen 263
– Anwendungssymbol 273
– beenden 296
– Bilder 326
– Bildschirmschoner 361
– Container 264
– Elemente der grafischen Oberfläche 264
– Ereignisbehandlung 265, 286
– Fenster 264, 265
– Grafik 313
– Hauptfenster 49
– Kontextmenüs 299
– Layout mit Containern 319
– Meldungsfenster 308
– Meldungsschleife 48
– Menüs 291
– Run()-Methode 48
– Steuerelemente 264, 275
– Symbolleisten 297
– Zwischenablage 296
Windows Forms-Designer 246
– Auswählen 247
– Formular laden 58
– Größe festlegen 247
– Komponenten ausrichten 248
– Komponenten einfügen 60
– Komponenten hinzufügen 246
– Komponenten konfigurieren 63
– Komponenten löschen 246
– Komponenten positionieren 64
– Kopieren 248
WindowState (Fenster) 362
Write() (Console) 195
WriteLine() (Console) 80, 89, 195, 203
Z
Zahlen
– Division 100
– NaN 147
– trigonometrische Methoden 98
– Typumwandlung 90, 92
– Zufallszahlen 219
Zeichencodierung 211
Zeichnen. Siehe Grafik
Zeilennummern 262
Zeilenumbrüche 84
Zeitgeber 366
– Ereignisbehandlungsmethode 366
– starten 366
– stoppen 366
– Zeitintervall 366
Zeitmessung 218
Zufallszahlen 219
Zugriffsmodifizierer 170, 171
– internal 171
– internal protected 172
– private 172
– protected 172, 182
– public 55, 107, 171
Zwischenablage 296
421
Herunterladen