Inhaltsverzeichnis

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