Dirk Louis Richtig einsteigen: Programmieren lernen mit Visual C# 2013 Dirk Louis: Programmieren lernen mit Visual C# 2013 Copyright © 2014 O’Reilly Verlag GmbH & Co. KG Das in diesem Buch enthaltene Programmmaterial ist mit keiner Verpflichtung oder Garantie irgendeiner Art verbunden. Autor, Übersetzer und der Verlag übernehmen folglich keine Verantwortung und werden keine daraus folgende oder sonstige Haftung übernehmen, die auf irgendeine Art aus der Benutzung dieses Programmmaterials oder Teilen davon entsteht. Die in diesem Buch erwähnten Software- und Hardwarebezeichnungen sind in den meisten Fällen auch eingetragene Marken und unterliegen als solche den gesetzlichen Bestimmungen. Der Verlag richtet sich im Wesentlichen nach den Schreibweisen der Hersteller. Das Werk einschließlich aller Teile ist urheberrechtlich geschützt. Jede Verwertung außerhalb der engen Grenzen des Urheberrechtsgesetzes ist ohne Zustimmung des Verlags unzulässig und strafbar. Das gilt insbesondere für Vervielfältigungen, Übersetzungen, Mikroverfilmungen und die Einspeicherung und Verarbeitung in elektronischen Systemen. Die in den Beispielen verwendeten Namen von Firmen, Organisationen, Produkten, Domänen, Personen, Orten, Ereignissen sowie E-Mail-Adressen und Logos sind frei erfunden, soweit nichts anderes angegeben ist. Jede Ähnlichkeit mit tatsächlichen Firmen, Organisationen, Produkten, Domänen, Personen, Orten, Ereignissen, E-Mail-Adressen und Logos ist rein zufällig. Kommentare und Fragen können Sie gerne an uns richten: Microsoft Press Deutschland Konrad-Zuse-Straße 1 85716 Unterschleißheim E-Mail: [email protected] 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 16 15 14 Druck-ISBN 978-3-86645-221-3 PDF-ISBN 978-3-8483-3001-0 EPUB-ISBN 978-3-8483-0039-6 MOBI-ISBN 978-3-8483-0203-1 © 2014 O’Reilly Verlag GmbH & Co. KG Balthasarstr. 81, 50670 Köln Alle Rechte vorbehalten Korrektorat: Anja Pabst, Siegen Lektorat: René Majer, [email protected] Layout: Helmut Kraus, www.exclam.de Satz: Nadine Krumm, Cordula Winkler, mediaService, Siegen (www.mediaservice.tv) Umschlaggestaltung: Helmut Kraus, www.exclam.de Gesamtherstellung: Digital Print Group O. Schimek GmbH, Nürnberg (www.digital-print-group.de) Inhaltsverzeichnis Teil I: Erste Schritte 1 Einleitung 15 1.1 1.2 1.3 Aufbau dieses Buches Konventionen in diesem Buch Software und Beispielsammlung Arbeiten mit der Beispielsammlung Einstellungen aus Beispielprojekten ablesen 16 17 18 18 19 2 Das erste Programm – das Projektgerüst 23 2.1 Von der Idee zum Programm Fallbeispiel: Eine verbesserte Fotoanzeige Programmierung erfolgt in Zyklen Willkommen bei Visual Studio Ein neues Projekt beginnen Quelltext – der erste Kontakt! Form1.cs und Form1.Designer.cs namespace und using Übungen zu diesem Kapitel 23 24 25 28 30 35 45 48 49 2.2 2.3 2.4 2.5 3 Das erste Programm – die Benutzeroberfläche 51 3.1 Die Designer-Umgebung Der Windows Forms-Designer Der Werkzeugkasten Das Eigenschaftenfenster Das Menü Format Komponenten aufnehmen Komponenten konfigurieren Ereignisse bearbeiten Eigenschaften zur Laufzeit ändern Die Eigenschaft Name Was tut sich auf der Festplatte? 51 52 52 53 54 54 57 59 60 62 63 3.2 3.3 3.4 3.5 3.6 3.7 6 3.8 3.9 Inhaltsverzeichnis Anwendungen außerhalb von Visual Studio aufrufen Aufruf über den Windows Explorer Aufruf über Start/Ausführen bzw. Start/<Suche starten> Aufruf über Start- oder Desktop-Link Übungen zu diesem Kapitel 63 64 64 65 65 Teil II: Grundkurs C# 4 Grundkurs: Datenverarbeitung 4.1 Datentypen und Variablen Der »Wert« der Variablen Variablen bei der Definition initialisieren Werte von Variablen abfragen Die elementaren Datentypen Strings Typumwandlung C# für Pedanten Variablen kontra Konstanten Operatoren Die verschiedenen Operatoren Verwendung der trigonometrische Methoden Division Objekte und Klassen C# für Philosophen Objekte und alte Datentypen Klassen definieren Mit Klassen programmieren Arrays Arrays definieren Auf Array-Elemente zugreifen Arrays initialisieren Vordefinierte Klassen und Namespaces Übungen zu diesem Kapitel 67 69 70 70 72 74 79 85 86 87 88 90 92 93 93 94 95 101 106 106 107 108 109 110 Grundkurs: Modularisierung und Programmsteuerung 113 Modularisierung durch Klassen und Methoden Teilprobleme in Methoden implementieren I Teilprobleme in Methoden implementieren II Teilprobleme in Klassen implementieren Eigene Bibliotheken 113 116 117 119 122 4.2 4.3 4.4 4.5 4.6 4.7 5 5.1 67 Inhaltsverzeichnis 5.2 7 5.4 5.5 Kontrollstrukturen Bedingungen: if-else Bedingungen und boolesche Ausdrücke Praxisbeispiel: Rechenmeister Mehrfachbedingungen: switch Die Schleifen for, while und foreach Schleifenvariablen und Abbruchbedingungen Schleifen und Arrays Zauber mit Schleifen, Zahlen und Kaninchen Änderung des Programmflusses Fehlerbehandlung durch Ausnahmen Ausnahmen abfangen Mehrere catch-Blöcke Die Ausnahme-Parameter Eigene Ausnahmen Selbstkontrolle Übungen zu diesem Kapitel 6 Rundgang durch Visual Studio für Fortgeschrittene 153 6.1 6.2 Tour-Start Die Projektverwaltung Ein Projekt anlegen Projekte speichern, schließen und öffnen Mit Projekten arbeiten Projekteigenschaften festlegen Projektmappen Der Editor Syntax-Hervorhebung Automatische Einrückung IntelliSense Zusammenarbeit mit Compiler und Debugger Weitere Funktionen Der Windows Forms-Designer Komponenten hinzufügen und löschen Komponenten auswählen Komponenten dimensionieren Komponenten ausrichten Komponenten kopieren Das Eigenschaftenfenster Der Compiler 5.3 6.3 6.4 6.5 126 127 128 128 132 133 135 137 138 139 140 140 144 145 146 146 150 153 154 154 154 155 157 160 164 164 164 165 167 167 167 167 168 168 169 169 170 171 8 6.6 6.7 6.8 6.9 Inhaltsverzeichnis Der Debugger Fehler und Debugging Ablauf von Debug-Sitzungen Vorbereitungen zum Debuggen Programm in Debugger laden und starten Programm anhalten Programm schrittweise ausführen Die Debug-Fenster Hilfe Die Online-Hilfe Die lokale Hilfe Konfiguration Übungen zu diesem Kapitel 172 173 173 174 175 176 177 177 179 180 181 182 183 Teil III: Aufbaukurs C# 7 Eigene Klassen 185 7.1 7.4 7.5 Statische und nicht-statische Klassenelemente Nicht-statische Elemente Statische Elemente Methoden Definition von Methoden Rückgabewerte von Methoden – return Parameterübergabe Überladung Zugriff und Zugriffbeschränkung Gültigkeit Lokale Variablen und Verdeckung Die Zugriffsmodifizierer Studie 4: Zugreifbarkeit auf Formularebene Eigenschaften Übungen zu diesem Kapitel 185 185 188 191 191 192 192 197 198 198 199 200 202 209 215 8 Klassen und Vererbung 217 8.1 Vererbung Der grundlegende Mechanismus Der Zugriffsmodifizierer protected Aufruf des Basisklassenkonstruktors Verbergen und Überschreiben geerbter Methoden Polymorphie Rückverwandlung Vorteile der Polymorphie 217 217 223 225 227 230 231 232 7.2 7.3 8.2 Inhaltsverzeichnis 8.3 9 8.5 Object ToString() überschreiben Boxing Schnittstellen (Interfaces) Schnittstellen definieren Schnittstellen implementieren Übungen zu diesem Kapitel 235 236 238 238 239 239 242 9 Nützliche .NET-Klassen 245 9.1 Textausgaben formatieren Einfache Ausgabe via Text Formatierte Zahlenausgabe Ausgabe mittels Platzhaltern Datum und Uhrzeit Datum und Uhrzeit ermitteln Datums- und Zeitangaben manipulieren Datums- und Zeitangaben ausgeben Zeitspannen messen Zufallszahlen Die Auflistungsklassen Historisches Die Auflistungen im Vergleich ArrayList List<T> Dictionary<TKey, TValue> Stack<T> Dateien In Dateien schreiben Lesen aus Dateien Informationen über Dateien und Verzeichnisse Studie 5: Reaktionstester Ausgangspunkt Periodisch wiederkehrende Aufgaben mit Timer Einen Zähler verwenden Was hat das Redesign gebracht? Doppelbelegung der Schaltfläche Den Reaktionstest starten Den Reaktionstest auswerten Verbesserungen Übungen zu diesem Kapitel 245 245 246 248 249 249 250 251 252 253 255 255 256 257 260 262 264 266 266 268 270 273 274 275 276 279 280 280 282 283 284 8.4 9.2 9.3 9.4 9.5 9.6 9.7 10 Inhaltsverzeichnis Teil IV: Windows Forms-Anwendungen 10 Formulare und Steuerelemente 287 10.1 Zusammengefasst: Was sind WindowsAnwendungen? Das Windowing-System Die grafische Oberfläche Die Ereignisbehandlung Fenster, Hauptfenster und Formulare Nachgefragt, was ist eigentlich ein Fenster? Das Fenster konfigurieren Anwendungssymbol Steuerelemente Programmieren mit Steuerelementen Beschriftungsfelder Schaltflächen Kontrollkästchen Optionsfelder und GroupBox Eingabefelder Listenfelder Kombinationsfelder Weitere Steuerelemente und weitere Informationen Layout mit Containern Neutrale Container (Panel) Layout-Container Funktionale Container Ereignisbehandlung Ereignisbehandlung einrichten Welches Ereignis soll ich abfangen und bearbeiten? Übungen zu diesem Kapitel 287 287 288 289 289 290 291 297 299 299 301 303 304 305 306 308 310 311 311 312 313 314 314 314 315 317 11 Menüs und Symbolleisten 319 11.1 Menüleisten Aufbau einer Menüleiste Ereignisbehandlung für Menüelemente Menüelemente konfigurieren Symbolleisten Kontextmenüs Übungen zu diesem Kapitel 319 319 323 325 325 327 328 10.2 10.3 10.4 10.5 10.6 11.2 11.3 11.4 Inhaltsverzeichnis 11 12 Dialogfelder 329 12.1 12.2 Was sind Dialogfelder? Dialogfelder aufbauen und konfigurieren Das Formular anlegen Formulare in Dialogfelder verwandeln Dialogfelder erzeugen und anzeigen Einstellungen aus Dialogfeldern abfragen Standarddialoge Meldungsfenster Dateien öffnen Übungen zu diesem Kapitel 329 330 330 331 332 334 336 337 337 339 13 Grafik 341 13.1 Das Arbeitsmaterial des Künstlers Text zeichnen Rekonstruktion von Zeichnungen – Das Paint-Ereignis Zeichenmethoden – Graphics Pinsel, Stift und Schrift In Panels zeichnen Die Benutzeroberfläche Die Auswahl der Funktionen Die Funktionen zeichnen Freihandlinien Konzept für Freihandlinien Eigene Graphics-Objekte erzeugen Bilder anzeigen Bilder aus Bilddateien laden Bilder anzeigen Studie 6: Ein Bildbetrachter Übungen zu diesem Kapitel 341 341 12.3 12.4 12.5 12.6 13.2 13.3 13.4 13.5 343 344 346 347 348 349 349 351 351 353 355 355 356 357 359 Teil V: Datenbanken und Bildschirmschoner 14 Datenbankzugriff (ADO.NET) 363 14.1 14.2 14.3 Relationale Datenbanken und SQL SQL-Grundlagen Zugriff auf eine SQL Server-Datenbank Die Datenbank Die Anwendung 363 365 367 368 374 12 14.4 Inhaltsverzeichnis 14.6 Zugriff auf eine Microsoft Access-Datenbank Projekt kopieren Datenbank erstellen Quelltext für Datenbankzugriff anpassen Datensätze bearbeiten Das Ausgangs-Projekt Das Zusammenspiel der Datenbankklassen Der Code Übungen zu diesem Kapitel 380 380 380 381 382 382 383 384 389 15 Bildschirmschoner 391 15.1 15.3 Was unterscheidet Bildschirmschoner von ­anderen Windows-Anwendungen? Ein Ticker als Bildschirmschoner Konfiguration des Fensters Beenden bei Mausklick Aufrufargumente auswerten Die Animation Den Bildschirmschoner einrichten Übungen zu diesem Kapitel 391 392 392 393 393 395 399 399 16 Wie geht es weiter? 401 14.5 15.2 Teil VI: Anhänge A Lösungen zu den Übungen 403 B Installation der Visual Studio Express Edition 423 B.1 B.2 B.3 B.4 Systemvoraussetzungen Download Installation Starten 423 424 425 425 C Weitergabe von Programmen 427 C.1 C.2 C.3 Vorarbeiten Der Setup-Assistent Woran hakt es? Das .NET Framework Bilder Externe Dateien DLLs 427 428 429 429 430 430 430 Inhaltsverzeichnis 13 D .NET Framework und C#‑Compiler 431 D.1 D.2 D.3 D.4 Das .NET Framework Die Komponenten des .NET Frameworks Bezugsquellen Geschichte und Motivation 431 434 434 435 E Konsolenanwendungen 439 E.1 Das Grundgerüst Konsolenanwendungen in Visual Studio Write(), WriteLine() Lesen von Tastatur Konsolenanwendungen außerhalb von Visual Studio ausführen 440 440 441 442 Stichwortverzeichnis 445 17 442 Herzlich willkommen beim Einsteiger-Kurs »Visual C#-Programmierung«! Freuen Sie sich auf eine ebenso unterhaltsame wie fundierte Einführung in die Programmierung und auf: zz interessante Programmierbeispiele – wie z.B. eine eigene Version der Windows- Fotoanzeige, ein Rechentrainer, ein Einarmiger Bandit, ein Reaktionstester, ein Texteditor, ein Bildschirmschoner etc. zz pures Windows – von Anfang an werden Sie mit Windows-Anwendungen, also Programmen mit grafischer Benutzeroberfläche arbeiten zz viele Übungen – am Ende jedes Kapitels gibt es Übungen zum Wiederholen und Einüben des gelernten Stoffes sowie zum Sammeln eigener Erfahrungen. Die Lösungen zu diesen Übungen finden Sie am Ende des Buches. zz Schritt-für-Schritt-Anleitungen und Fallstudien – neben den Übungen am Kapitelende gibt es noch diverse in die Kapiteltexte eingestreute Schritt-fürSchritt-Anleitungen und Studien, die Sie theoretisch – oder besser noch ganz real – nachvollziehen können. Diese Übungen sollen Ihnen helfen, typische Arbeitsgänge zu verinnerlichen, Praxis zu schnuppern oder auch – wie im Falle der Designstudie »Reaktionstester« aus Kapitel 9 – einmal näherungsweise nachzuempfinden, mit welchen Problemen und Entscheidungen man als Programmierer so zu kämpfen hat (also quasi einen Blick über die Schulter zu werfen). zz zahlreiche Hinweise, Praxistipps und Hintergrundinformationen zz große Themenvielfalt – Hauptaugenmerk dieses Buches ist natürlich das Erlernen der Programmiersprache C#, die Erstellung von Windows-Anwendungen und die Arbeit mit der Entwicklungsumgebung Visual Studio. Darüber hinaus können Sie sich mit diesem Buch aber noch in viele weitere Programmiergebiete einarbeiten, namentlich: zz die Erstellung von Datenbankanwendungen (Kapitel 14), zz das Schreiben von Bildschirmschonern (Kapitel 15) zz das Schreiben von Konsolenanwendungen (Anhang E) zz die Weitergabe von Programmen (Anhang C) zz das Schreiben von Windows Store-Apps (als herunterladbarer PDF-Auszug aus dem C#-Entwicklerbuch) I – Erste Schritte Einleitung