Inhaltsverzeichnis

Alle Kapitel aufklappen
Alle Kapitel zuklappen
Materialien zum Buch
19
1 Einführung
21
1.1 C# und Visual Studio
21
1.2 Aufbau dieses Buchs
22
1.3 Visual Studio 2022
22
1.4 Mein erstes Windows-Programm
23
1.5 Visual-Studio-Entwicklungsumgebung
23
1.5.1 Ein neues Projekt
24
1.5.2 Einfügen von Steuerelementen
27
1.5.3 Arbeiten mit dem Eigenschaften-Fenster
28
1.5.4 Speichern eines Projekts
31
1.5.5 Das Codefenster
31
1.5.6 Schreiben von Programmcode
33
1.5.7 Kommentare
34
1.5.8 Starten, Ausführen und Beenden des Programms
35
1.5.9 Ausführbares Programm
36
1.5.10 Schließen und Öffnen eines Projekts
36
1.5.11 Übung »UName«
37
1.6 Ausgaben
37
1.6.1 Methode »ToString()«
37
1.6.2 String-Interpolation
38
1.6.3 Zeilenumbrüche
39
1.6.4 Dialogfeld für Ausgabe
41
1.7 Arbeiten mit Steuerelementen
42
1.7.1 Steuerelemente formatieren
42
1.7.2 Steuerelemente kopieren
43
1.7.3 Eigenschaften zur Laufzeit ändern
44
1.7.4 Ausgabe von Eigenschaften
46
1.7.5 Farben und die Struktur »Color«
47
2 Grundlagen
49
2.1 Variablen und Datentypen
49
2.1.1 Namen und Werte
49
2.1.2 Datentypen
50
2.1.3 Gültigkeitsbereich
54
2.1.4 Konstanten
57
2.1.5 Enumerationen
58
2.2 Operatoren
60
2.2.1 Rechenoperatoren
60
2.2.2 Vergleichsoperatoren
62
2.2.3 Logische Operatoren
63
2.2.4 Zuweisungsoperatoren
65
2.2.5 Rangfolge der Operatoren
65
2.3 Einfache Steuerelemente
66
2.3.1 Steuerelement »Panel«
66
2.3.2 Steuerelement »Timer«
68
2.3.3 Steuerelement »TextBox«
71
2.3.4 Steuerelement »NumericUpDown«
74
2.4 Verzweigungen mit »if« und »else«
76
2.4.1 Allgemeiner Aufbau
76
2.4.2 »if« ohne »else«
77
2.4.3 »if« mit »else«
78
2.4.4 Geschachtelte Verzweigung mit »if« und »else«
79
2.4.5 Bedingter Ausdruck mit ternärem Operator ? :
80
2.4.6 Logischer Und-Operator &&
81
2.4.7 Logischer Oder-Operator ||
82
2.4.8 Logischer Exklusiv-Oder-Operator ^
83
2.5 Verzweigungen mit »switch«
85
2.5.1 Allgemeiner Aufbau
85
2.5.2 Einfache switch-Anweisung
86
2.5.3 switch-Anweisung mit Vergleichsoperatoren
87
2.5.4 switch-Anweisung mit »goto case«
89
2.5.5 Einfacher switch-Ausdruck
90
2.5.6 »switch« mit »or«
92
2.5.7 switch-Ausdruck mit Vergleichsoperatoren
92
2.5.8 »switch« mit mehreren Vergleichen und »when«
93
2.6 Verzweigungen und Steuerelemente
94
2.6.1 Steuerelement »CheckBox«
95
2.6.2 Steuerelement »RadioButton«
97
2.6.3 Gemeinsame Methode für mehrere Ereignisse
98
2.6.4 Steuerelement »GroupBox«
100
2.6.5 Methoden allgemein, Modularisierung
102
2.6.6 Steuerelement »TrackBar«
103
2.7 Schleifen
104
2.7.1 Schleife mit »for«
105
2.7.2 Schleife mit »while« oder »do-while«
107
2.7.3 Übungen
110
2.8 Schleifen und Steuerelemente
112
2.8.1 Steuerelement »ListBox«
112
2.8.2 ListBox füllen
112
2.8.3 Eigenschaften der ListBox
113
2.8.4 ListBox mit foreach-Schleife
115
2.8.5 Ereignis der ListBox
116
2.8.6 Methoden der ListBox
117
2.8.7 ListBox mit Mehrfachauswahl
120
2.8.8 Steuerelement »ComboBox«
121
3 Fehlerbehandlung
125
3.1 Entwicklung eines Programms
125
3.2 Fehlerarten
126
3.3 Syntaxfehler
126
3.3.1 Editor
127
3.3.2 Syntaxfehler
128
3.4 Laufzeitfehler und Exception Handling
130
3.4.1 Programm mit Laufzeitfehlern
130
3.4.2 Einfaches Exception Handling
132
3.4.3 Erweitertes Exception Handling
133
3.5 Logische Fehler und Debuggen
135
3.5.1 Einzelschrittverfahren
135
3.5.2 Haltepunkte
136
3.5.3 Überwachungsfenster
137
4 Erweiterte Grundlagen
139
4.1 Steuerelemente aktivieren
139
4.1.1 Ereignis »Enter«
139
4.1.2 Eigenschaften »Enabled« und »Visible«
142
4.2 Bedienung per Tastatur
144
4.2.1 Eigenschaften »TabIndex« und »TabStop«
145
4.2.2 Tastenkombination für Steuerelemente
146
4.3 Ereignisgesteuerte Programmierung
146
4.3.1 Eine Ereigniskette
147
4.3.2 Endlose Ereignisketten
148
4.3.3 TextBoxen koppeln
150
4.3.4 Tastatur und Maus
152
4.4 Datenfelder
153
4.4.1 Eindimensionale Datenfelder
153
4.4.2 Bereiche
155
4.4.3 Datenfelder durchsuchen
157
4.4.4 Weitere Methoden
158
4.4.5 Mehrdimensionale Datenfelder
160
4.4.6 Indizes ermitteln
162
4.4.7 Mehr als zwei Dimensionen
163
4.4.8 Datenfelder initialisieren
164
4.4.9 Verzweigte Datenfelder
165
4.4.10 Datenfelder sind dynamisch
167
4.5 Methoden
170
4.5.1 Einfache Methoden
170
4.5.2 Methoden mit Parametern
171
4.5.3 Kurzform
172
4.5.4 Übergabe mit »ref«
173
4.5.5 Übergabe von Objektverweisen
175
4.5.6 Ausgabeparameter mit »out«
177
4.5.7 Methoden mit Rückgabewerten
178
4.5.8 Optionale Parameter
179
4.5.9 Benannte Parameter
181
4.5.10 Beliebig viele Parameter
182
4.5.11 Rekursiver Aufruf
183
4.5.12 Übungen zu Methoden
185
4.6 Nullbare Datentypen
186
4.6.1 Nicht nullbare Datentypen
186
4.6.2 Nullbare Datentypen
188
4.6.3 Zugriff nach Verzweigung
189
4.6.4 Null-Zusammenfügungsoperator ??
189
4.6.5 Null-Sammelzuweisungsoperator ??=
190
4.6.6 Null-toleranter Operator !
191
4.7 Konsolenanwendung
192
4.7.1 Anwendung erzeugen
192
4.7.2 Eingabe eines Textes
193
4.7.3 Eingabe einer Zahl
194
4.7.4 Erfolgreiche Eingabe einer ganzen Zahl
195
4.7.5 Ausgabe formatieren
196
4.7.6 Aufruf mit Startparametern
197
4.8 Tupel
199
4.8.1 Implizit typisierte Variablen
199
4.8.2 Unbenannte Tupel
200
4.8.3 Dekonstruktion
201
4.8.4 Benannte Tupel
202
4.8.5 Implizite Namen und Vergleiche
203
4.8.6 Unbenannte Tupel und Methoden
204
4.8.7 Benannte Tupel und Methoden
206
5 Objektorientierte Programmierung
207
5.1 Was ist Objektorientierung?
207
5.2 Klasse, Eigenschaft, Methode, Objekt
208
5.2.1 Definition der Klasse
208
5.2.2 Nutzung der Klasse
210
5.3 Eigenschaftsmethode
212
5.3.1 Definition der Klasse
212
5.3.2 Nutzung der Klasse
214
5.4 Konstruktor
215
5.4.1 Definition der Klasse
215
5.4.2 Nutzung der Klasse
217
5.5 Namensräume
218
5.6 Referenzen, Vergleiche und Typen
219
5.6.1 Definition der Klasse
219
5.6.2 Referenzen
220
5.6.3 Operator ==
221
5.6.4 Methode »Equals()«
222
5.6.5 Methode »GetType()« und Operator »typeof«
223
5.6.6 Operator »is«
224
5.6.7 Ausdruck »nameof«
225
5.7 Operatormethoden
226
5.7.1 Nutzung der Methoden
226
5.7.2 Grundelemente der Klasse
228
5.7.3 Operatormethoden zur Berechnung
229
5.7.4 Operatormethoden zum Vergleich
230
5.8 Statische Elemente
232
5.8.1 Definition der Klasse
232
5.8.2 Nutzung der Klasse
234
5.9 Datensatztypen
235
5.10 Delegates
237
5.11 Vererbung
239
5.11.1 Definition der Basisklasse
240
5.11.2 Definition der abgeleiteten Klasse
241
5.11.3 »private«, »protected« und »public«
242
5.11.4 Nutzung der beiden Klassen
242
5.12 Polymorphie
243
5.12.1 Definition der Basisklasse
244
5.12.2 Definition der abgeleiteten Klasse
244
5.12.3 Nutzung der beiden Klassen
245
5.13 Abstrakte Klassen
246
5.13.1 Definition der abstrakten Klasse
247
5.13.2 Definition der konkreten Klasse »Kreis«
247
5.13.3 Definition der konkreten Klasse »Rechteck«
248
5.13.4 Nutzung der beiden Klassen
249
5.14 Schnittstellen
250
5.14.1 Vordefinierte Schnittstelle
250
5.14.2 Eigene Schnittstelle
251
5.14.3 Definition der Klasse
251
5.14.4 Nutzung der Klasse
252
5.15 Strukturen
253
5.15.1 Definition der inneren Struktur
254
5.15.2 Definition der äußeren Struktur
254
5.15.3 Nutzung der verschachtelten Struktur
255
5.16 Generische Datentypen
256
5.16.1 Eine Liste von Zeichenketten
257
5.16.2 Definition der Klasse
260
5.16.3 Eine Liste von Objekten
262
5.16.4 Ein Dictionary von Objekten
263
5.17 Dekonstruktion
266
5.18 Erweiterungsmethoden
268
5.18.1 Definition der Erweiterungsmethoden
268
5.18.2 Nutzung der Erweiterungsmethoden
269
5.19 Eigene Klassenbibliotheken
270
5.19.1 DLL erstellen
270
5.19.2 DLL nutzen
272
5.20 Mehrere Formulare
273
5.20.1 Neues Formular erzeugen
274
5.20.2 Gestaltung und Benutzung der Anwendung
274
5.20.3 Klasse des Hauptformulars
275
5.20.4 Klasse des Unterformulars
276
6 Wichtige Klassen in .NET
279
6.1 Zeichenketten
279
6.1.1 Eigenschaften der Klasse »String«
280
6.1.2 Trimmen
281
6.1.3 Splitten
282
6.1.4 Suchen
283
6.1.5 Einfügen
286
6.1.6 Löschen
287
6.1.7 Teilzeichenkette ermitteln
289
6.1.8 Zeichen ersetzen
290
6.1.9 Ausgabe formatieren
291
6.2 Datum und Uhrzeit
293
6.2.1 Eigenschaften der Struktur »DateTime«
293
6.2.2 Rechnen mit Datum und Uhrzeit
295
6.2.3 Steuerelement »DateTimePicker«
297
6.3 Textdateien
300
6.3.1 Schreiben in eine Textdatei
300
6.3.2 Lesen aus einer Textdatei
303
6.3.3 Schreiben in eine CSV-Datei
304
6.3.4 Lesen aus einer CSV-Datei
305
6.3.5 Ändern der Kodierung
307
6.4 XML-Dateien
307
6.4.1 Aufbau von XML-Dateien
308
6.4.2 Schreiben in eine XML-Datei
309
6.4.3 Lesen aus einer XML-Datei
310
6.4.4 Schreiben von Objekten
312
6.4.5 Lesen von Objekten
314
6.5 Verzeichnisse
316
6.5.1 Das aktuelle Verzeichnis
316
6.5.2 Eine Liste der Dateien
317
6.5.3 Eine Liste der Dateien und Verzeichnisse
318
6.5.4 Informationen über Dateien und Verzeichnisse
319
6.5.5 Bewegen in der Verzeichnishierarchie
320
6.6 Mathematische Funktionen
321
7 Weitere Elemente eines Windows-Programms
327
7.1 Hauptmenü
327
7.1.1 Erstellung des Hauptmenüs
327
7.1.2 Aufbau eines Hauptmenüs
329
7.1.3 Code der Menüpunkte
330
7.1.4 Änderung der Hintergrundfarbe
330
7.1.5 Klasse »Font«
331
7.1.6 Änderung der Schriftart
332
7.1.7 Änderung der Schriftgröße
333
7.1.8 Schriftstil
334
7.2 Kontextmenü
335
7.2.1 Erstellung des Kontextmenüs
335
7.2.2 Code des Kontextmenüs
336
7.3 Symbolleiste
338
7.3.1 Erstellung der Symbolleiste
338
7.3.2 Code der Symbolleiste
339
7.4 Statusleiste
341
7.4.1 Erstellung der Statusleiste
341
7.4.2 Code der Statusleiste
342
7.5 Dialogfeld »InputBox«
343
7.5.1 Einfache Eingabe
343
7.5.2 Eingabe der Lottozahlen
344
7.6 Dialogfeld »MessageBox«
346
7.6.1 Bestätigen einer Information
346
7.6.2 »Ja« oder »Nein«
347
7.6.3 »Ja«, »Nein« oder »Abbrechen«
348
7.6.4 »Wiederholen« oder »Abbrechen«
349
7.6.5 »Abbrechen«, »Wiederholen« oder »Ignorieren«
349
7.7 Standarddialogfelder
350
7.7.1 Datei öffnen
350
7.7.2 Datei speichern unter
352
7.7.3 Verzeichnis auswählen
353
7.7.4 Farbe auswählen
354
7.7.5 Schrifteigenschaften auswählen
355
7.8 Lokalisierung
356
7.9 Steuerelement »RichTextBox«
361
7.10 Steuerelement »ListView«
363
7.11 Steuerelement »DataGridView«
366
8 Datenbankanwendungen
371
8.1 Was sind relationale Datenbanken?
371
8.1.1 Beispiel »Lager«
371
8.1.2 Indizes
374
8.1.3 Relationen
375
8.1.4 Übungen
379
8.2 Anlegen einer Datenbank in MS Access
380
8.2.1 Aufbau von MS Access
380
8.2.2 Datenbankentwurf in MS Access
381
8.2.3 Übungen
386
8.3 Datenbankzugriff mit C# in Visual Studio
386
8.3.1 Beispieldatenbank
386
8.3.2 Ablauf eines Zugriffs
387
8.3.3 Verbindung
387
8.3.4 SQL-Befehl
388
8.3.5 Paket installieren
388
8.3.6 Auswahlabfrage
389
8.3.7 Aktionsabfrage
392
8.4 SQL-Befehle
393
8.4.1 Rahmenprogramm
394
8.4.2 Einzelne Felder
396
8.4.3 Filtern mit Zahl
396
8.4.4 Filtern mit Zeichen
397
8.4.5 Operatoren
397
8.4.6 Operator »LIKE«
398
8.4.7 Sortierung
399
8.4.8 Parameter für Zahlen
399
8.4.9 Parameter für Suchbegriff
401
8.4.10 Parameter für Suchzeichen
402
8.4.11 Einfügen mit »INSERT«
403
8.4.12 Ändern mit »UPDATE«
403
8.4.13 Löschen mit »DELETE«
404
8.4.14 Typische Fehler in SQL
404
8.5 Ein Verwaltungsprogramm
406
8.5.1 Rahmenprogramm
406
8.5.2 Alle Datensätze sehen
407
8.5.3 Datensatz einfügen
409
8.5.4 Datensatz zur Bearbeitung anzeigen
410
8.5.5 Datensatz ändern
411
8.5.6 Datensatz löschen
412
8.5.7 Datensätze suchen
413
8.6 Abfragen über mehrere Tabellen
414
8.6.1 Datenbankmodell und Tabellen
415
8.6.2 Alle Personen
417
8.6.3 Anzahl der Kunden
417
8.6.4 Alle Kunden mit allen Projekten
417
8.6.5 Alle Personen mit allen Projektzeiten
418
8.6.6 Alle Personen mit Zeitsumme
419
8.6.7 Alle Projekte mit allen Personenzeiten
420
8.6.8 Alle Projekte mit Zeitsumme
420
8.6.9 Abfragen mit Verknüpfung
421
8.7 Verbindung zu MySQL
421
8.7.1 Zugriff auf die Datenbank
422
8.8 Verbindung zu SQLite
423
8.8.1 Eigenschaften von SQLite
423
8.8.2 Erstellung der Datenbank
424
8.8.3 Zugriff auf die Daten
425
9 Zeichnen mit GDI+
427
9.1 Grundlagen von GDI+
427
9.2 Linie, Rechteck, Polygon und Ellipse zeichnen
427
9.2.1 Grundeinstellungen
428
9.2.2 Linie
429
9.2.3 Rechteck
430
9.2.4 Polygon
431
9.2.5 Ellipse
431
9.2.6 Dicke und Farbe ändern, Zeichnung löschen
432
9.3 Text zeichnen
433
9.4 Bilder darstellen
435
9.5 Dauerhaft zeichnen
437
9.6 Zeichnen einer Funktion
438
9.6.1 Ereignismethoden
438
9.6.2 Methode zum Zeichnen
439
10 Beispielprojekte
443
10.1 Spielprogramm »Tetris«
443
10.1.1 Spielablauf
443
10.1.2 Programmbeschreibung
444
10.1.3 Steuerelemente
445
10.1.4 Initialisierung des Programms
446
10.1.5 Erzeugen eines neuen Panels
448
10.1.6 Der Zeitgeber
449
10.1.7 Panels löschen
450
10.1.8 Panels seitlich bewegen
454
10.1.9 Panels nach unten bewegen
455
10.1.10 Pause
455
10.2 Lernprogramm »Vokabeln«
456
10.2.1 Benutzung des Programms
456
10.2.2 Erweiterung des Programms
458
10.2.3 Initialisierung des Programms
458
10.2.4 Ein Test beginnt
460
10.2.5 Zwei Hilfsmethoden
461
10.2.6 Die Antwort prüfen
463
10.2.7 Das Benutzermenü
464
11 Windows Presentation Foundation
467
11.1 Layout
468
11.1.1 Erstellung des Projekts
468
11.1.2 Gestaltung der Oberfläche
469
11.1.3 Code der Ereignismethoden
470
11.2 Steuerelemente
471
11.2.1 Gestaltung der Oberfläche
471
11.2.2 Code der Ereignismethoden
473
11.3 Anwendung mit Navigation
474
11.3.1 Ablauf der Anwendung
474
11.3.2 Navigationsdatei
475
11.3.3 Aufbauseite
476
11.3.4 Steuerungsseite
477
11.4 Zweidimensionale Grafik
477
11.4.1 Gestaltung der Oberfläche
478
11.4.2 Code der Ereignismethode
480
11.5 Dreidimensionale Grafik
480
11.5.1 Gestaltung der Oberfläche
481
11.5.2 Code der Ereignismethode
483
11.6 Animation
484
11.6.1 Gestaltung der Oberfläche
485
11.6.2 Das Storyboard
487
Anhang
489
A Installation und technische Hinweise
489
A.1 Installation von Visual Studio Community 2022
489
A.2 Arbeiten mit einer Projektvorlage
490
A.3 Weitergabe eigener Windows-Programme
491
Index
495