Programmieren lernen in Visual C#.NET von Walter Doberenz, Thomas Kowalski 1. Auflage Hanser München 2003 Verlag C.H. Beck im Internet: www.beck.de ISBN 978 3 446 22023 2 Zu Leseprobe schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG
CARL HANSER VERLAG Walter Doberenz, Thomas Kowalski Programmieren lernen in Visual C#.NET 3-446-22023-2 www.hanser.de
Inhaltsverzeichnis 7 Inhaltsverzeichnis LEKTION 1: Einführung und Entwicklungsumgebung... 15 1.1 Grundlagen... 17 1.1.1 Wichtige Begriffe... 17 1.1.2 Windows-Programmierung mit Visual C#.NET... 20 1.1.3 Etappen der Programmentwicklung... 21 1.2 Erster Kontakt mit der Entwicklungsumgebung... 22 1.2.1 Das Startmenü... 22 1.2.2 Die wichtigsten Fenster... 23 1.3 Praktische Übungen... 27 ÜBUNG 1.1: Unser allererstes C#-Programm... 27 ÜBUNG 1.2: Windows-Anwendung für Einsteiger... 33 ÜBUNG 1.3: Windows-Anwendung für Fortgeschrittene... 36 LEKTION 2: Grundlegende Sprachelemente... 43 2.1 Grundbegriffe... 45 2.1.1 Anweisungen... 45 2.1.2 Bezeichner... 45 2.1.3 Schlüsselwörter... 46 2.1.4 Kommentare... 46 2.2 Datentypen, Variablen und Konstanten... 47 2.2.1 Fundamentale Typen... 47 2.2.2 Benennung von Variablen... 48 2.2.3 Deklaration von Variablen...49 2.2.4 Initialisierte Variablen... 49 2.2.5 Zeichen und Zeichenketten... 50 2.2.6 object-datentyp... 51 2.2.7 Konstanten deklarieren... 51 2.2.8 Gültigkeitsbereiche und Sichtbarkeit... 51 2.3 Operatoren... 52 2.3.1 Arithmetische Operatoren...52 2.3.2 Zuweisungsoperatoren... 54 2.3.3 Logische Operatoren... 55 2.3.4 Rangfolge der Operatoren...56 2.4 Konvertieren von Datentypen... 57 2.4.1 Implizite und explizite Konvertierung... 57
8 Inhaltsverzeichnis 2.4.2 Welcher Datentyp passt zu welchem?...58 2.4.3 Konvertieren von string...59 2.5 Kontrollstrukturen...61 2.5.1 Verzweigungsbefehle...61 2.5.2 Schleifenanweisungen...63 2.6 Praktische Übungen...65 ÜBUNG 2.1: Vom PAP zum Konsolen-Programm...65 ÜBUNG 2.2: Vom Konsolen- zum Windows-Programm...67 ÜBUNG 2.3: Schleifenanweisungen kennen lernen...68 LEKTION 3: Formulare und Komponenten... 71 3.1 Allgemeines über Steuerelemente...73 3.1.1 Standardeigenschaften...73 3.1.2 Standardereignisse...74 3.1.3 Standardmethoden...78 3.2 Windows-Formulare...79 3.3 Die wichtigsten Windows Forms-Komponenten...84 3.3.1 Label...84 3.3.2 Button...85 3.3.3 TextBox...85 3.3.4 CheckBox...86 3.3.5 RadioButton...87 3.3.6 GroupBox...87 3.3.7 Panel...88 3.3.8 ListBox...88 3.3.9 ComboBox...89 3.3.10 HScrollBar, VScrollBar...90 3.3.11 Timer...91 3.4 Praktische Übungen...92 ÜBUNG 3.1: Arbeiten mit der TextBox...92 ÜBUNG 3.2: Verwendung der ListBox...93 ÜBUNG 3.3: RadioButtons und CheckBoxen...95 ÜBUNG 3.4: Anzeige weiterer Fenster...96 LEKTION 4: Fortgeschrittene Sprachelemente... 97 4.1 Nutzerdefinierte Datentypen...99 4.1.1 Aufzählungstypen...99 4.1.2 Strukturen...100
Inhaltsverzeichnis 9 4.2 Datenfelder (Arrays)... 101 4.2.1 Array deklarieren... 101 4.2.2 Array instanziieren... 101 4.2.3 Array initialisieren... 102 4.2.4 Zugriff auf Array-Elemente... 102 4.2.5 Mehrdimensionale Arrays... 104 4.2.6 Zuweisen von Arrays... 105 4.2.7 Arrays aus Strukturvariablen... 105 4.2.8 Löschen und Umdimensionieren von Arrays... 106 4.3 Stringverarbeitung... 107 4.3.1 Zuweisen von Strings... 107 4.3.2 Eigenschaften und Methoden eines Strings... 108 4.4 Formatieren von Zahlen... 110 4.4.1 ToString-Methode... 111 4.4.2 Format-Methode... 112 4.5 Nutzerdefinierte Funktionen... 113 4.5.1 Methoden mit Rückgabewert... 114 4.5.2 Methoden ohne Rückgabewert... 115 4.5.3 Parameterübergabe mit ref... 116 4.5.4 Parameterübergabe mit out... 117 4.5.5 Überladene Methoden... 117 4.6 Praktische Übungen... 118 ÜBUNG 4.1: Strukturvariablen und Arrays... 118 ÜBUNG 4.2: Text verschlüsseln... 121 ÜBUNG 4.3: Mittelwerte berechnen... 123 LEKTION 5: Grafikprogrammierung... 127 5.1 Übersicht... 129 5.1.1 GDI+... 129 5.1.2 Namespaces... 130 5.2 Anzeigen von Grafiken... 130 5.2.1 Die PictureBox-Komponente... 130 5.2.2 Das Image-Objekt... 131 5.2.3 Laden von Grafiken zur Laufzeit... 132 5.2.4 Sichern von Grafiken... 132 5.3 Das Koordinatensystem... 133 5.3.1 Globale Koordinaten... 133 5.3.2 Seitenkoordinaten (globale Transformation)... 134 5.3.3 Gerätekoordinaten (Seitentransformation)... 135
10 Inhaltsverzeichnis 5.4 Wichtige Zeichenfunktionen von GDI+...136 5.4.1 Das zentrale Graphics-Objekt...136 5.4.2 Linien...137 5.4.3 PolyLine...137 5.4.4 Rechtecke...138 5.4.5 Kreise und Ellipsen...139 5.4.6 Tortenstück (Segment)...139 5.4.7 Bogenstück...140 5.4.8 Textausgabe...140 5.4.9 Ausgabe von Grafiken...141 5.5 Wichtige Objekte...142 5.5.1 Vordefinierte Objekte...142 5.5.2 Farben/Transparenz...143 5.5.3 Stifte (Pen)...144 5.5.4 Pinsel (Brush)...146 5.5.5 Fonts...146 5.6 Übungen...147 ÜBUNG 5.1: Eine Linie zeichnen...147 ÜBUNG 5.2: Rechtecke und Ellipsen zeichnen...150 ÜBUNG 5.3: Zeichnen von Kuchendiagrammen...152 LEKTION 6: Objektorientiertes Programmieren... 153 6.1 Eine kleine Einführung in die OOP...155 6.1.1 Grundbegriffe...155 6.1.2 Sichtbarkeit von Klassen und ihren Mitgliedern...156 6.1.3 Allgemeiner Aufbau einer Klasse...156 6.1.4 Der Lebenszyklus eines Objekts...157 6.2 Eigenschaften...159 6.2.1 Kapselung mit Zugriffsmethoden...159 6.2.2 Lese-/Schreibschutz...160 6.3 Methoden...160 6.4 Ereignisse...161 6.4.1 Ereignisse hinzufügen...161 6.4.2 Ereignisse benutzen...163 6.5 Praktische Übungen...165 ÜBUNG 6.1: Eine einfache Klasse entwickeln...165 ÜBUNG 6.2: Vererbung anwenden...168 ÜBUNG 6.3: Polymorphie verstehen...172
Inhaltsverzeichnis 11 LEKTION 7: Druckausgabe... 175 7.1 Ein Beispiel für den Einstieg... 177 7.2 Übersicht... 178 7.3 Auswerten der aktuellen Druckereinstellungen... 179 7.3.1 Die vorhandenen Drucker... 180 7.3.2 Der Standarddrucker... 180 7.3.3 Verfügbare Papierformate/Seitenabmessungen... 180 7.3.4 Der eigentliche Druckbereich... 181 7.3.5 Seitenausrichtung ermitteln... 182 7.3.6 Ermitteln der Farbfähigkeit... 182 7.3.7 Die Druckauflösung abfragen... 182 7.4 Festlegen von Druckereinstellungen... 183 7.4.1 Einen Drucker auswählen... 183 7.4.2 Drucken in Millimetern... 183 7.4.3 Festlegen der Seitenränder... 184 7.5 Die Druckdialoge... 185 7.5.1 PrintDialog... 185 7.5.2 PageSetupDialog... 186 7.6 PrintPreviewDialog... 188 7.7 Übungen... 189 ÜBUNG 7.1: Druckerauswahl und Druckausgabe... 189 ÜBUNG 7.2: Komplexbeispiel Druckausgabe/Dialoge... 190 LEKTION 8: Dateien und Streams... 199 8.1 Operationen mit Verzeichnissen und Dateien... 201 8.1.1 Klassen für Verzeichnis- und Dateioperationen... 201 8.1.2 Zur Schreibweise von Verzeichnissen in C#... 201 8.1.3 Verzeichnisse erzeugen und löschen... 202 8.1.4 Verzeichnisse verschieben und umbenennen... 202 8.1.5 Das aktuelle Verzeichnis ermitteln bzw. festlegen... 202 8.1.6 Unterverzeichnisse ermitteln... 203 8.1.7 Anwenden der Path-Klasse... 203 8.1.8 Dateien kopieren, verschieben und umbenennen... 204 8.1.9 Dateiattribute feststellen... 205 8.1.10 Weitere Datei-Eigenschaften... 206 8.1.11 Statische oder Instanzen-Klasse?... 207 8.1.12 Überwachung von Änderungen im Dateisystem... 207 8.2 Lesen und schreiben von Dateien... 208
12 Inhaltsverzeichnis 8.2.1 Übersicht...208 8.2.2 Dateiparameter...210 8.2.3 Textdateien...211 8.2.4 Binärdateien...212 8.2.5 Sequenzielle (typisierte) Dateien...213 8.3 Praxisbeispiele...215 ÜBUNG 8.1: Lesen der Datei-Infos...215 ÜBUNG 8.2: Lese- und Schreibzugriff auf eine Textdatei...216 ÜBUNG 8.3: Byteweises Lesen und Schreiben...218 ÜBUNG 8.4: Eine sequenzielle Datei lesen und schreiben...219 ÜBUNG 8.5: Sequenzielle Datei mit serialisierten Objekten...221 LEKTION 9: Datenbankprogrammierung mit ADO.NET... 225 9.1 Grundlagen...227 9.1.1 Merkmale des Datenbankzugriffs...227 9.1.2 Die wichtigsten Klassen in ADO.NET...228 9.1.3 Das Zusammenspiel der ADO.NET-Klassen...229 9.2 Praktische Übungen...231 ÜBUNG 9.1: Zugriff auf Access-Datenbank...231 ÜBUNG 9.2: Zugriff auf SQL Server...233 ÜBUNG 9.3: Daten-Komponenten aus der Toolbox...234 ÜBUNG 9.4: Kennenlernen des DataReader...238 ÜBUNG 9.5: Arbeiten mit dem DataForm-Assistenten...239 ÜBUNG 9.6: Datenanbindung von Steuerelementen...246 ÜBUNG 9.7: Master-Detailbeziehungen...249 ÜBUNG 9.8: Aggregatfunktionen anwenden...252 LEKTION 10: Webbasierte Anwendungen... 253 10.1 ASP.NET eine Übersicht...255 10.1.1 Was ist ASP.NET?...255 10.1.2 Voraussetzungen für den Einsatz von ASP.NET...255 10.1.3 Und was hat das alles mit C#.NET zu tun?...256 10.1.4 Kurzübersicht der Web-Controls...258 10.2 Wichtige ASP.NET-Objekte...260 10.2.1 Session...260 10.2.2 Application...261 10.2.3 Page...262 10.2.4 Request...264 10.2.5 Response...266
Inhaltsverzeichnis 13 10.3 Und wo bleibt die Datenbindung?... 267 10.4 Übungen... 268 ÜBUNG 10.1: Ein erstes eigenes ASP.NET-Projekt... 268 ÜBUNG 10.2: Datengebundene Web-Forms... 272 ÜBUNG 10.3: Master-Detaildaten anzeigen... 275 LEKTION 11: Komponentenentwicklung... 279 11.1 Überblick... 281 11.1.1 Benutzerdefiniertes Steuerelement (Custom Control)... 281 11.1.2 Benutzersteuerelement... 285 11.1.3 Komponentenklasse... 287 11.2 Eigenschaften... 287 11.2.1 Einfache Eigenschaften... 287 11.2.2 Eigenschaften von Aufzählungstypen... 291 11.2.3 Objekt-Eigenschaften... 292 11.3 Methoden... 292 11.3.1 Konstruktor... 293 11.3.2 Destruktor... 293 11.4 Ereignisse (Events)... 294 11.4.1 Ereignis mit Standardargument... 294 11.4.2 Ereignis mit eigenen Argumenten... 295 11.5 Übungen... 296 ÜBUNG 11.1: Farbauswahlbox... 296 ÜBUNG 11.2: Digitalanzeige... 299 LEKTION 12: Techniken der Programmentwicklung... 305 12.1 Arbeiten mit dem Debugger... 307 12.1.1 Grundlagen... 307 12.1.2 Single-Step... 310 12.1.3 Procedure-Step... 311 12.1.4 Breakpoints... 311 12.1.5 Das Debug-Objekt... 311 12.2 Fehlerbehandlung in C#... 312 12.2.1 Anweisungen zur Fehlerbehandlung... 312 12.2.2 try-catch... 313 12.2.3 try-finally... 315 12.2.4 Die Exception-Klasse... 317 12.2.5 Fehler/Ausnahmen auslösen... 318
14 Inhaltsverzeichnis 12.3 Übungen...319 ÜBUNG 12.1: Debugging...319 ÜBUNG 12.2: Eigene Fehlerklassen definieren...323 Index... 325