walter DOBERENZ thomas GEWINNUS VISUAL C# 2012 KOCHBUCH // 500 sofort einsatzbereite Lösungen // Sprache, Techniken, OOP, GUI- und Webprogrammierung // Entwickeln von Windows Store Apps EXTRA: Kostenloses E-Book inkl. 670 Seiten Bonuskapitel Doberenz/Gewinnus Visual C# 2012 Kochbuch Bleiben Sie auf dem Laufenden! Der Hanser Computerbuch-Newsletter informiert Sie regelmäßig über neue Bücher und Termine aus den verschiedenen Bereichen der IT. Profitieren Sie auch von Gewinnspielen und exklusiven Leseproben. Gleich anmelden unter www.hanser-fachbuch.de/newsletter Walter Doberenz Thomas Gewinnus Visual C# 2012 Kochbuch Die Autoren: Professor Dr.-Ing. habil. Walter Doberenz, Wintersdorf Dipl.-Ing. Thomas Gewinnus, Frankfurt/Oder Alle in diesem Buch enthaltenen Informationen, Verfahren und Darstellungen wurden nach bestem Wissen zusammengestellt und mit Sorgfalt getestet. Dennoch sind Fehler nicht ganz auszuschließen. Aus diesem Grund sind die im vorliegenden Buch enthaltenen Informationen mit keiner Verpflichtung oder Garantie irgendeiner Art verbunden. Autoren und Verlag übernehmen infolgedessen keine juristische Verantwortung und werden keine daraus folgende oder sonstige Haftung übernehmen, die auf irgendeine Art aus der Benutzung dieser Informationen – oder Teilen davon – entsteht. Ebenso übernehmen Autoren und Verlag keine Gewähr dafür, dass beschriebene Verfahren usw. frei von Schutzrechten Dritter sind. Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Waren­be­zeich­­nungen usw. in diesem Buch berechtigt deshalb auch ohne besondere Kennzeichnung nicht zu der Annahme, dass solche Namen im Sinne der Warenzeichen- und MarkenschutzGesetzgebung als frei zu betrachten wären und daher von jedermann benutzt werden dürften. Bibliografische Information der Deutschen Nationalbibliothek Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbiblio­ grafie; detaillierte bibliografische Daten sind im Internet über <http://dnb.d-nb.de> abrufbar. Dieses Werk ist urheberrechtlich geschützt. Alle Rechte, auch die der Übersetzung, des Nachdrucks und der Vervielfältigung des Buches, oder Teilen daraus, sind vorbehalten. Kein Teil des Werkes darf ohne schriftliche Genehmigung des Verlages in irgendeiner Form (Fotokopie, Mikrofilm oder ein anderes Verfahren), auch nicht für Zwecke der Unterrichtsgestaltung, reproduziert oder unter Verwendung elektronischer Systeme verarbeitet, vervielfältigt oder verbreitet werden. © 2013 Carl Hanser Verlag München http://www.hanser-fachbuch.de Lektorat: Sieglinde Schärl Herstellung: Irene Weilhart Satz: Ingenieurbüro Gewinnus Sprachlektorat: Walter Doberenz Umschlagdesign: Marc Müller-Bremer, www.rebranding.de, München Umschlagrealisation: Stephan Rönigk Druck und Bindung: Kösel, Krugzell Ausstattung patentrechtlich geschützt. Kösel FD 351, Patent-Nr. 0748702 Printed in Germany Print-ISBN: 978-3-446-43438-7 E-Book-ISBN: 978-3-446-43605-3 Inhaltsverzeichnis Vorwort 1 Kleiner C#-Anfängerkurs R1 R2 R3 R4 R5 R6 2 .......................................................................... .................................................... 29 Das EVA-Prinzip anwenden ................................................ Ein Array definieren und initialisieren ....................................... Die Arraygröße zur Laufzeit ändern ......................................... Berechnungen in eine Methode auslagern ................................... Konsolenprogramm nach Windows portieren ................................ Werte in einer ListBox anzeigen ............................................ 29 33 36 38 42 46 Sprache R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 25 ...................................................................... 51 Anwendungen von Visual Basic nach C# portieren ........................... String in Array kopieren und umgekehrt ..................................... Ein Byte-Array in einen String konvertieren ................................. Strukturvariablen in Arrays einsetzen ........................................ Eine einzelne Spalte aus einer Matrix kopieren .............................. In einer ArrayList suchen und sortieren ...................................... In einer generischen Liste suchen und sortieren .............................. Zufallszahlen erzeugen ..................................................... Iterationen verstehen (Quadratwurzel) ....................................... Iterationen verstehen (Goldener Schnitt) ..................................... Funktionen rekursiv aufrufen ............................................... Zeichenketten mittels StringBuilder addieren ................................ Strings vergleichen ......................................................... Eine Stoppuhr programmieren .............................................. Zeitangaben runden ........................................................ Zeitdifferenzen ermitteln .................................................... 51 58 60 61 64 66 68 69 71 74 75 76 80 83 85 87 6 Inhaltsverzeichnis R23 R24 R25 R26 R27 R28 R29 R30 R31 R32 R33 R34 R35 R36 R37 R38 R39 R40 R41 R42 R43 R44 R45 R46 R47 R48 3 Datumsdifferenzen berechnen ............................................... Das Alter in Jahren bestimmen .............................................. Die Monatsdifferenz berechnen ............................................. Das Datum beweglicher Feiertage berechnen ................................ Ersten und letzten Wochentag des Monats ermitteln .......................... Den Wochentag eines Datums ermitteln ..................................... Abschreibungen auf Monatsbasis berechnen ................................. Reisespesen berechnen ..................................................... Geldbeträge kaufmännisch runden .......................................... Fehler bei mathematischen Operationen behandeln .......................... Mit Potenzen und Wurzeln rechnen ......................................... Einen Delegate definieren und anwenden .................................... Mit Delegates sortieren (Bubblesort) ........................................ Referenz-/Wertetypen als Parameter übergeben .............................. LINQ im Schnelldurchgang erlernen ........................................ Strings mit LINQ abfragen und filtern ....................................... Duplikate aus einer Liste oder einem Array entfernen ........................ Arrays mit LINQ initialisieren .............................................. Arrays per LINQ mit Zufallszahlen füllen ................................... Einen String mit Wiederholmuster erzeugen ................................ Mit LINQ Zahlen und Strings sortieren ...................................... Mit LINQ Collections von Objekten sortieren ............................... Ergebnisse von LINQ-Abfragen in ein Array kopieren ....................... Sortieren mit IComparable/IComparer ....................................... Mit async und await asynchron programmieren .............................. Tipps & Tricks ............................................................. Zahlen definiert runden .................................................. Auf das letzte Zeichen im String testen ................................... Die letzten Zeichen eines Strings abschneiden ............................ Leerzeichen aus einem String entfernen .................................. Die aktuelle Uhrzeit anzeigen ............................................ Die Uhrzeit von String- in DateTime-Datentyp umwandeln ............... Kurze Alternative zur if-Anweisung ...................................... OOP/Komponenten R49 R50 R51 88 91 92 94 96 97 99 102 105 106 110 111 113 116 119 122 123 126 129 130 132 133 136 136 140 143 143 143 143 143 144 144 144 .......................................................... 145 Überladene versus überschriebene Methoden ................................ Aggregation und Vererbung gegenüberstellen ................................ Objekte serialisieren ........................................................ 145 148 154 7 Inhaltsverzeichnis R52 R53 R54 R55 R56 R57 R58 R59 R60 R61 R62 4 Ein wieder verwendbares Formular erstellen ................................. Von einem Formular erben .................................................. Von vorhandenen Steuerelementen erben .................................... Eine Komponente zur Farbauswahl entwickeln .............................. Eine Digitalanzeige-Komponente programmieren ............................ OOP beim Kartenspiel erlernen ............................................. Eine Klasse zur Matrizenrechnung entwickeln ............................... Interop-Typen in die Assembly einbetten .................................... Das Observer-Pattern anwenden (Variante 1) ................................ Das Observer-Pattern anwenden (Variante 2) ................................ Einen Objektbaum in generischen Listen abspeichern ....................... Windows Forms-Anwendungen R63 R64 R65 R66 R67 R68 R69 R70 R71 R72 R73 R74 R75 R76 R77 R78 R79 R80 R81 R82 R83 R84 R85 R86 R87 157 160 165 169 173 178 183 188 191 194 199 ............................................ 207 Das Startformular festlegen ................................................. Beim Programmstart eine Abfrage ausführen ................................ Das Schließen des Formulars verhindern .................................... Mit mehreren Formularen arbeiten .......................................... MDI-Applikation und Menüs erstellen ...................................... Formulare im Formular anzeigen ............................................ Zur Laufzeit ein Steuerelement erzeugen .................................... Steuerelemente-Array per Code erzeugen .................................... Auf ein Control-Array zugreifen ............................................ Mit der TextBox arbeiten ................................................... In einer TextBox suchen .................................................... Nur Zahleneingaben zulassen ............................................... Die Schrifteigenschaften einer TextBox ändern .............................. Dezimalkomma in Dezimalpunkt umwandeln ............................... Tastatureingaben für mehrere TextBoxen filtern .............................. RadioButtons und CheckBoxen einsetzen ................................... Die ListBox kennen lernen .................................................. Die ComboBox erkunden ................................................... Objekte in ListBox/ComboBox anzeigen .................................... Mit der CheckedListBox arbeiten ........................................... Die Maus abfragen ......................................................... Das TableLayoutPanel einsetzen ............................................ Mit einem Kontextmenü arbeiten ........................................... Einfache Datenbindung praktizieren ......................................... Anwendungseinstellungen an Controls binden ............................... 207 209 210 211 216 219 222 224 226 229 231 232 234 236 237 239 241 244 247 250 253 254 258 260 263 8 Inhaltsverzeichnis R88 R89 R90 R91 R92 R93 R94 R95 R96 R97 R98 R99 R100 5 Mit Drag & Drop arbeiten .................................................. Mit dem ErrorProvider arbeiten ............................................. Eingaben validieren ........................................................ Das NotifyIcon-Control in der Taskleiste einsetzen .......................... Ein Array in einer ListView anzeigen ........................................ Eine ListView mit dem Inhalt eines DataSets füllen .......................... In der ListView nach beliebigen Spalten sortieren ............................ Das Microsoft Chart-Control verwenden .................................... WPF-Komponenten mit dem ElementHost anzeigen ......................... Die Einstellungen des User-Interface sichern ................................ Drag & Drop im Steuerelemente-Array realisieren ........................... Programmierung einer mehrspaltigen ListBox ............................... Die Tabulatorbreite verändern ............................................... Windows Presentation Foundation R101 R102 R103 R104 R105 R106 R107 R108 R109 R110 R111 R112 R113 R114 268 272 275 278 282 284 289 294 297 301 306 313 317 ......................................... 319 WPF-Anwendung im Fullscreen-Mode starten ............................... Fenster auf einem bestimmten Screen anzeigen .............................. Das Hauptfenster festlegen und ändern ...................................... Einen Splash-Screen erzeugen und anzeigen ................................. Eine WPF-Browseranwendung erstellen ..................................... Größe und Titel des Browserfensters festlegen ............................ Größe der Browseranwendung anpassen .................................. Ein-/Ausblenden der Navigationsschaltflächen ........................... Navigation zwischen einzelnen Seiten (Pages) ............................ Verwendung von Cookies ................................................ Abfrage von QueryStrings ............................................... Übergabe von Page-Instanzen per Konstruktor ............................ Eine Instanz der Seite erhalten ........................................... Einen Ersatz für Window realisieren ...................................... WPF-Oberflächen zur Laufzeit erzeugen .................................... Grafiken in WPF skaliert anzeigen .......................................... Grafiken aus Dateien zur Laufzeit laden ..................................... Grafiken aus Ressourcen zur Laufzeit zuweisen ............................. Sonderzeichen im Content darstellen ........................................ Eigene Schriftarten in die Anwendung einbetten ............................. WPF-Controls trotz Layout frei positionieren ................................ Textformatierungen im Content realisieren .................................. Irreguläre Window-Formen erzeugen ........................................ 319 320 322 323 325 325 326 328 328 330 332 333 334 334 335 338 340 342 345 346 348 349 350 9 Inhaltsverzeichnis R115 R116 R117 R118 R119 R120 R121 R122 R123 R124 R125 R126 R127 R128 R129 R130 6 Einfache Zeichnungen zur Laufzeit ausgeben ................................ Kommandozeilenparameter auswerten ...................................... Ein Video anzeigen und steuern ............................................. Schatteneffekt für Controls realisieren ....................................... Eine TextBox beim Fokuserhalt optisch markieren ........................... Den TextBox-Inhalt beim Fokuserhalt markieren ............................ Den Pfad der aktuellen Anwendung bestimmen .............................. Formulare per Reflection auswählen und anzeigen ........................... Datenbindung für Anwendungseinstellungen ................................ Deutsches Datumsformat anzeigen .......................................... Einen Timer in WPF nutzen ................................................. Das User-Interface am Task-Ende aktualisieren .............................. Das User-Interface aus dem Task aktualisieren ............................... Collections in Hintergrundthreads füllen ..................................... Einen Ribbon in meine Anwendung einbinden ............................... Das WPF-Chart-Control verwenden ......................................... Silverlight 352 354 356 358 361 362 364 364 366 367 369 370 372 375 380 390 ................................................................... 393 Den Fokus auf das Silverlight-Plugin setzen ................................. Zugriff auf die Zwischenablage realisieren .................................. Drag & Drop-Unterstützung realisieren ...................................... Den Querystring der aktuellen Seite auswerten .............................. Dokumente in Silverlight drucken ........................................... Einen Webcam-Screenshot drucken ......................................... ASP.NET- und WCF-Dienste einbinden ..................................... Die WCF Data Services nutzen ............................................. Eine Desktop-Anwendung erzeugen ......................................... Assemblies nachladen ...................................................... Daten per ZIP-Datei nachladen .............................................. Kommunikation zwischen Plugins realisieren ................................ Den Sender programmieren .............................................. Den Empfänger programmieren .......................................... ASP.NET-Testweb anpassen und testen ................................... R143 Einen Timer in Silverlight nutzen ........................................... R144 Weitere Dialogfenster öffnen ................................................ R145 Dateien auf dem Client speichern ........................................... 393 394 395 398 399 401 406 415 424 429 432 434 434 436 437 438 440 442 R131 R132 R133 R134 R135 R136 R137 R138 R139 R140 R141 R142 10 7 Inhaltsverzeichnis Windows Store Apps ........................................................ 445 R146 Den App-Aufbau verstehen und ändern ...................................... R147 Die Startseite festlegen ..................................................... Statische Änderung ...................................................... Dynamische Änderung .................................................. R148 Prüfen, ob die App zum ersten Mal gestartet wurde .......................... R149 App-Zustände vor dem Programmende sichern .............................. R150 Anmeldedaten sicher speichern ............................................. R151 Zwischen App-Seiten navigieren ............................................ R152 Informationen zwischen Seiten austauschen ................................. R153 Auflösungsabhängige Bild-Ressourcen einbetten ............................ R154 Einer App ein anderes Theme zuweisen ..................................... Anpassung per XAML-Code ............................................. Theme in Visual Studio anpassen ........................................ Ein Theme zur Laufzeit wechseln ........................................ R155 Die Windows-Kontakt-Liste verwenden ..................................... R156 Eine E-Mail versenden ..................................................... R157 Apps in die Windows 8-Suche integrieren ................................... R158 Das Einstellungen-Panel verwenden ......................................... R159 Einstellungen über mehrere Geräte synchronisieren .......................... R160 Auf Größen- und Formatänderungen reagieren .............................. R161 Die Modern UI-Live Tiles ansteuern ........................................ R162 Eine Dateiverknüpfung erstellen ............................................ R163 Die Zwischenablage verwenden ............................................. R164 Daten anderen Apps zur Verfügung stellen ................................... R165 Daten aus anderen Apps konsumieren ....................................... R166 FilePicker für die Dateiauswahl verwenden .................................. R167 Von der MessageBox zum MessageDialog .................................. R168 Aus Threads auf die Oberfläche zugreifen ................................... R169 Einen Style zur Laufzeit zuweisen ........................................... R170 Eine App per Code beenden ................................................. R171 Die Positionskoordinaten für Google-Maps nutzen ........................... R172 Eine Pause realisieren ...................................................... R173 Global auf Tasteneingaben reagieren ........................................ R174 Einen Timer programmieren ................................................ R175 Die aktuelle Bildschirmauflösung ermitteln .................................. R176 Auf ein Touch-Eingabegerät testen .......................................... R177 Prüfen, ob eine Tastatur angeschlossen ist ................................... 445 449 449 450 453 453 461 465 470 470 473 473 474 475 477 480 483 491 500 500 505 511 515 523 527 537 542 546 546 547 547 552 553 556 558 559 561 11 Inhaltsverzeichnis R178 R179 R180 R181 R182 R183 R184 R185 R186 8 Die virtuelle Tastatur richtig einsetzen ....................................... Prüfen, ob eine Internetverbindung verfügbar ist ............................. Informationen über das aktuelle Package abrufen ............................ Das Verzeichnis der App bestimmen ........................................ Soundausgaben im Background realisieren .................................. Audiodaten aufnehmen und wiedergeben .................................... Bilder/Videos mit dem WinRT-Dialog aufnehmen ........................... Bilder/Videos mit eigenem Userinterface aufnehmen ......................... Windows Store Apps richtig debuggen ...................................... Verwendung einer Protokolldatei ......................................... Debuggen mit DebugView ............................................... Debuggen von Contract-aktivierten Apps ................................. R187 Apps auf einem anderen PC installieren ..................................... 561 563 565 568 569 575 579 583 588 589 592 592 593 Schnittstellen ............................................................... 595 Eine einfache E-Mail versenden ............................................. E-Mails mit dem integrierten Mail-Client versenden ......................... Die Zwischenablage verwenden ............................................. Die WIA-Library kennenlernen ............................................. Installation/Vorbereitung ................................................. Einstieg mit kleiner Beispielanwendung .................................. Reagieren auf das Verbinden/Trennen von Geräten ........................ Ermitteln der verfügbaren Geräte ......................................... Anzeige der Geräteeigenschaften ......................................... Ein Bild einlesen ........................................................ Bild(er) drucken per Assistent ............................................ Den Scanner-Assistent aufrufen .......................................... Grafikbearbeitung mit WIA .............................................. Auf eine Webcam zugreifen ................................................. Auf den Scanner zugreifen .................................................. OpenOffice.org Writer per OLE steuern ..................................... VB-Library "OOWLib" .................................................. C#-Anwendungsprogramm .............................................. Mit OLE-Automation auf MS Access zugreifen .............................. Ein Managed Add-In programmieren und einbinden ......................... Entwurf des Add-Ins ..................................................... Erstellen der Access-Anwendung ........................................ Zugriff auf die serielle Schnittstelle ......................................... 595 596 598 599 600 601 603 603 604 605 608 609 610 611 614 619 619 623 626 631 632 637 639 R188 R189 R190 R191 R192 R193 R194 R195 R196 R197 12 Inhaltsverzeichnis R198 R199 R200 R201 R202 9 Sound per MCI aufnehmen ................................................. Mikrofonpegel anzeigen .................................................... Pegeldiagramm aufzeichnen ................................................ Sound-und Video-Dateien per MCI abspielen ................................ Eine C-DLL in C# einbinden ................................................ System R203 R204 R205 R206 R207 R208 R209 R210 R211 R212 R213 R214 R215 R216 R217 R218 R219 R220 R221 643 647 648 652 661 ....................................................................... 669 Nutzer und Gruppen des aktuellen Systems ermitteln ........................ Testen, ob Nutzer in einer Gruppe enthalten ist .............................. Testen, ob der Nutzer ein Administrator ist .................................. Die IP-Adressen des Computers bestimmen ................................. Die IP-Adresse über den Hostnamen bestimmen ............................. Diverse Systeminformationen ermitteln ..................................... Betriebssystem (Name, Version, Bootmode) .............................. Schriftarten/-Informationen .............................................. Bildschirme ............................................................. Netzwerk (User-Name, PC-Name ...) ..................................... Environment Variablen auslesen ......................................... Hardware-Informationen ................................................. Energiestatus ............................................................ Anwendung (Pfad, Name, Assembly) .................................... Soundkarte(n) ........................................................... CLR-Version ............................................................ Alles über den Bildschirm erfahren .......................................... Die Registrierdatenbank verwenden ......................................... Eine verknüpfte Anwendung öffnen ......................................... Eine Dateiverknüpfung erzeugen ............................................ Den Computer herunterfahren oder neu starten .............................. Variante 1 (ExitWindowsEx) ............................................. Variante 2 (Shutdown.exe) ............................................... Den "Herunterfahren"-Dialog anzeigen ...................................... Das System-Shutdown-Ereignis auswerten .................................. Windows in den Standby-Modus versetzen .................................. Systemereignisse auswerten ................................................ Windows Botschaften verarbeiten ........................................... Alle geöffneten Windows Fenster ermitteln .................................. Die Taskbar Notification Area (TNA) verwenden ............................ Neue Programmgruppen erzeugen .......................................... 669 671 673 674 675 676 677 678 679 680 681 682 683 683 684 685 686 687 690 691 693 693 695 697 698 698 699 700 702 705 707 13 Inhaltsverzeichnis R222 R223 R224 R225 R226 R227 R228 R229 R230 R231 R232 R233 R234 R235 R236 R237 R238 R239 R240 R241 Verknüpfungen auf dem Desktop erzeugen .................................. Den Bildschirmschoner aktivieren/deaktivieren .............................. Drag & Drop mit dem Explorer realisieren .................................. System-Icons verwenden ................................................... Die Desktop-Icons ein-/ausblenden .......................................... Die Taskbar ausblenden ..................................................... Den Papierkorb leeren ...................................................... Den Windows Suchassistenten verwenden ................................... Systemtöne und WAV-Dateien wiedergeben ................................. Das Windows-Systemprotokoll nutzen ...................................... Das Windows-Systemprotokoll überwachen ................................. Die Zwischenablage überwachen und anzeigen .............................. Das Datei-Eigenschaftenfenster anzeigen .................................... Prüfen, ob Visual Styles aktiviert sind ....................................... Schriftarten dynamisch einbinden und verwenden ........................... Eine Soundkarte erkennen .................................................. Prozess- und Thread-Informationen gewinnen ............................... Ein externes Programm starten .............................................. Eine externe Anwendung starten und überwachen ............................ Erhöhte Berechtigungen erhalten ............................................ Anwendungsmanifest ändern ............................................ RunAs verwenden ....................................................... UAC-Icon anzeigen ..................................................... 10 Sonstiges R242 R243 R244 R245 R246 R247 R248 R249 R250 R251 R252 R253 R254 709 711 712 713 714 715 716 717 719 721 723 724 727 729 730 732 733 738 740 742 743 745 748 .................................................................... 749 Logische Fehler mittels Debugger aufspüren ................................. Eigene Fehlerklassen definieren ............................................. Die MessageBox-Klasse verwenden ......................................... Nur eine Anwendungsinstanz zulassen ...................................... Die Anwendungsparameter auswerten ....................................... Tastaturbefehle senden ...................................................... Mittels Reflection Typinformationen sammeln ............................... Ressourcen per Reflection auslesen ......................................... Methoden per Reflection oder dynamisch aufrufen ........................... Mehrere Methoden parallel verarbeiten ...................................... Arrays parallel verarbeiten .................................................. Client/Server-Anwendung mit zwei Projekten ............................... Eine Windows Form-Anwendung lokalisieren ............................... 749 756 758 760 762 764 768 770 773 775 779 783 787 14 Inhaltsverzeichnis R255 R256 R257 R258 R259 R260 R261 R262 R263 R264 R265 R266 R267 R268 R269 R270 Eine Assembly dynamisch einbinden ........................................ ILSpy zum "Schnüffeln" verwenden ........................................ Eine GUID erzeugen ....................................................... Bytes in Megabyte umrechnen .............................................. Hex-Dezimal-Bytes-Konverter .............................................. Einen langen Hex-String in Bytes umwandeln ............................... Einen String verschlüsseln .................................................. Die Verwendung von DoEvents verstehen ................................... Eine Pause realisieren ...................................................... Numerische Integration ausführen ........................................... Hilfedateien programmieren ................................................ Hilfedateien in die Visual C#-Anwendung einbinden ......................... Eine alternative Hilfe-IDE verwenden ...................................... Installationsdateien erzeugen ................................................ Eine farbige Konsolenanwendung realisieren ................................ Lesbare Menüleisten in Visual Studio 2012 anzeigen ......................... 791 795 797 798 799 803 805 807 810 812 816 820 824 825 836 838 ........................................................................... 839 A B Glossar .................................................................... Wichtige Datei-Extensions .................................................. 839 844 Index ............................................................................. 845 Anhang Bonuskapitel im E-Book Zweites Vorwort ................................................................. 11 Kleiner OOP-Crashkurs R271 R272 R273 R274 R275 R276 R277 873 ..................................................... 875 Klassen und Objekte verstehen .............................................. Einen eigenen Konstruktor implementieren .................................. Eigenschaften kapseln ...................................................... Vererbung und Polymorphie anwenden ...................................... Ereignisse programmieren .................................................. Ein Entwurfsmuster umsetzen ............................................... Das Microsoft Event Pattern implementieren ................................ 875 880 881 885 892 895 905 12 Grafikprogrammierung ..................................................... 909 R278 Ein Graphics-Objekt erzeugen .............................................. Verwendung des Paint-Events ............................................ Überschreiben der OnPaint-Methode ..................................... Graphics-Objekt mit CreateGraphics erzeugen ............................ Verwendung des Graphics-Objekts einer PictureBox ...................... R279 Verbundene Linien und Pfeile zeichnen ..................................... R280 Eine gemusterte Linie zeichnen ............................................. R281 Rechtecke und Ellipsen zeichnen ............................................ R282 Rechtecke mit runden Ecken zeichnen ....................................... R283 Transparente Farben verwenden ............................................. R284 Ein Tortendiagramm zeichnen .............................................. R285 Die Grafikdialoge richtig einsetzen .......................................... R286 Ein Control-Array mit Grafiken ausstatten ................................... R287 Einen grafischen Würfel programmieren .................................... 909 909 910 911 912 912 914 915 916 918 919 920 922 925 – Diese Rezepte finden Sie nur im E-Book – 16 Bonuskapitel im E-Book R288 R289 R290 R291 R292 R293 R294 R295 R296 R297 R298 R299 R300 R301 R302 R303 R304 R305 R306 R307 R308 R309 R310 R311 R312 R313 R314 R315 R316 R317 R318 R319 R320 Den Abstand zwischen zwei Punkten berechnen ............................. Ein Balkendiagramm zeichnen .............................................. Farbwerte mischen ......................................................... Eine Verkehrsampel programmieren ......................................... Eine 2D-Vektorgrafik manipulieren ......................................... Geometrische Transformationen durchführen ................................ Eine Grafik scrollen ........................................................ Eine Bitmap erzeugen und als Datei speichern ............................... Eine Metafilegrafik erzeugen und speichern ................................. Einen Fenster-Screenshot erzeugen .......................................... Einen Desktop-Screenshot realisieren ....................................... Auf dem Windows-Desktop zeichnen ....................................... Eine Grafik aus den Programmressourcen laden ............................. Zwei Farbwerte miteinander vergleichen .................................... Einen Farbverlauf erzeugen ................................................. Einen transparenten Stift erzeugen .......................................... Texte gedreht ausgeben ..................................................... Text mit Schatten ausgeben ................................................. Mehrzeiligen Text ausgeben ................................................ Text mit Tabulatoren ausgeben .............................................. Die installierten Schriftarten ermitteln ....................................... Die JPEG-Kompression festlegen ........................................... Eine Grafik maskieren ...................................................... Die Transparenz einer Grafik steuern ........................................ Einfache GIF-Animationen wiedergeben .................................... Auf einzelne GIF-Frames zugreifen ......................................... Aus animierten Gifs ein Bitmap-Strip erzeugen .............................. Flackernde Grafikausgaben vermeiden ...................................... Einfache Grafikanimationen realisieren ...................................... RGB-Grafiken manipulieren ................................................ Einen Markierungsrahmen erzeugen ........................................ Zeichenoperationen mit der Maus realisieren ................................ Ein Testbild programmieren ................................................ 13 Drucker/Drucken ............................................................ 928 930 934 938 941 946 948 949 950 952 954 956 958 961 962 963 964 966 967 968 969 971 972 974 976 978 980 981 983 985 992 994 997 1001 R321 Mit C# drucken ............................................................ 1001 R322 Den Windows Standard-Drucker ermitteln ................................... 1002 R323 Den Windows Standard-Drucker ändern ..................................... 1003 – Diese Rezepte finden Sie nur im E-Book – 17 Bonuskapitel im E-Book R324 R325 R326 R327 R328 R329 R330 R331 R332 R333 R334 R335 R336 R337 R338 R339 R340 R341 R342 R343 R344 R345 R346 R347 R348 R349 R350 Die verfügbaren Drucker ermitteln .......................................... Einen Drucker auswählen ................................................... Papierformate und Seitenabmessungen bestimmen ........................... Den physikalischen Druckbereich ermitteln .................................. Die aktuelle Seitenausrichtung ermitteln ..................................... Testen ob es sich um einen Farbdrucker handelt .............................. Die physikalische Druckauflösung abfragen ................................. Prüfen, ob beidseitiger Druck möglich ist .................................... Einen Informationsgerätekontext erzeugen .................................. Drucken mit Millimeter-Angaben ........................................... Die Seitenränder für den Druck festlegen .................................... Einen Druckjobnamen vergeben ............................................ Die Anzahl der Kopien festlegen ............................................ Beidseitigen Druck realisieren .............................................. Bestimmte Seitenbereiche drucken .......................................... Den PageSetup-Dialog verwenden .......................................... Das Windows-Drucker-Fenster anzeigen .................................... Eine Textdatei drucken ..................................................... Den Inhalt einer TextBox drucken ........................................... Den Drucker umfassend konfigurieren ...................................... Mit Microsoft Word per OLE drucken ....................................... Ein Microsoft Word-Formular füllen und drucken ............................ Mit Microsoft Access drucken .............................................. Die Drucker-Konfiguration anzeigen ........................................ Diverse Druckereigenschaften bestimmen ................................... Dokumente mit dem Internet Explorer drucken .............................. Einen Drucker anhalten ..................................................... 14 Dateien/Verzeichnisse R351 R352 R353 R354 R355 R356 R357 R358 R359 1004 1005 1006 1008 1009 1009 1010 1011 1011 1013 1014 1016 1017 1017 1018 1023 1026 1027 1029 1031 1041 1044 1048 1049 1051 1052 1054 ...................................................... 1057 Mit den Dateidialogen auf eine Textdatei zugreifen .......................... Alle Unterverzeichnisse auflisten ........................................... Alle Dateien auflisten ....................................................... Die GetFileSystemInfos-Methode verwenden ............................... Die Path-Klasse kennen lernen .............................................. Verzeichnis- und Datei-Informationen gewinnen ............................. Änderungen im Dateisystem überwachen .................................... Dateien rekursiv suchen .................................................... Eine sequenzielle Datei lesen und schreiben ................................. 1057 1061 1062 1063 1065 1066 1070 1073 1075 – Diese Rezepte finden Sie nur im E-Book – 18 Bonuskapitel im E-Book R360 R361 R362 R363 R364 R365 R366 R367 R368 R369 Serialisierte Objekte in einer Datei ablegen .................................. Den Inhalt einer ListView als Datei abspeichern ............................. Den Verzeichnisinhalt in einer ListView anzeigen ............................ Einen Verzeichnisbaum in eine TreeView einlesen ........................... Eine Datei verschlüsseln .................................................... Eine Datei komprimieren ................................................... Die vorhandenen Laufwerke feststellen ...................................... Das Einlesen einer Datei mit ProgressBar anzeigen .......................... Echte ZIP-Dateien erstellen ................................................. PDFs erstellen/exportieren .................................................. iTextSharp .............................................................. PDFsharp ............................................................... R370 Eine CSV-Datei erstellen ................................................... R371 Eine CSV-Datei mit LINQ lesen und auswerten .............................. R372 Einen korrekten Dateinamen erzeugen ...................................... 1078 1082 1087 1090 1092 1095 1097 1098 1100 1102 1103 1104 1106 1109 1112 15 XML .......................................................................... 1113 R373 R374 R375 R376 R377 R378 R379 R380 R381 R382 R383 R384 R385 R386 R387 R388 R389 R390 Ein DataSet in einen XML-String konvertieren .............................. Ein DataSet in einer XML-Datei speichern .................................. In Dokumenten mit dem XPathNavigator navigieren ......................... In Dokumenten mit XElement/XDocument navigieren ....................... In Dokumenten mit dem XPathNavigator suchen ............................ Hierarchische Daten in einer TreeView darstellen ............................ XML-Daten mit dem XmlReader lesen ...................................... XML-Daten mit LINQ to XML einlesen/filtern .............................. XML-Daten mit dem XmlWriter erzeugen ................................... XML-Dokumente mit LINQ to XML erzeugen .............................. Verzeichnisstruktur als XML-Dokument sichern ............................. Binäre Daten in einem XML-Dokument speichern ........................... Objektstrukturen im XML-Format sichern ................................... XML-Dokumente mit XSLT transformieren ................................. XML-Dokumente mit LINQ transformieren ................................. XML-Daten mit XmlDataDocument bearbeiten ............................. XML-Daten in SQL Server-Tabellen speichern .............................. XML-Dokumente in Webanwendungen anzeigen ............................ 1113 1117 1120 1124 1128 1131 1134 1137 1139 1141 1143 1145 1148 1153 1155 1156 1159 1160 – Diese Rezepte finden Sie nur im E-Book – Bonuskapitel im E-Book 16 ADO.NET R391 R392 R393 R394 R395 R396 R397 R398 R399 R400 R401 R402 R403 R404 R405 R406 R407 R408 R409 R410 R411 R412 R413 R414 R415 R416 R417 R418 R419 R420 R421 R422 R423 R424 R425 R426 19 ..................................................................... 1165 Auf eine Access-Datenbank zugreifen ....................................... Auf den SQL Server zugreifen .............................................. ConnectionString in Konfigurationsdatei ablegen ............................ Den DataReader kennen lernen ............................................. Minimaler DB-Client für Lese- und Schreibzugriff ........................... Schemainformationen verwenden ........................................... Query Notifications verwenden ............................................. Mit einer Datenquelle arbeiten .............................................. Eine Aktionsabfrage ausführen .............................................. Daten direkt hinzufügen oder löschen ....................................... Gespeicherte Prozeduren aufrufen ........................................... Eine Access-Auswahlabfrage aufrufen ...................................... Parametrierte Abfragen unter MS Access ausführen .......................... Parametrierte Abfragen für SQL Server ausführen ........................... Datumswerte in SQL-Anweisungen einbauen ................................ Die Datenbank manuell aktualisieren ....................................... Die Datenbank mit CommandBuilder aktualisieren .......................... Mit Stapel-Abfragen arbeiten ............................................... RowUpdating-/RowUpdated-Ereignisse verwenden .......................... MARS kennen lernen ....................................................... Auf Zeilen und Spalten der DataTable zugreifen ............................. Eine ListBox an eine DataView binden ...................................... Das DataGridView mit ComboBoxen ausrüsten ............................. Auf eine einzelne Zeile im DataGridView zugreifen ......................... DataTable erzeugen und in Binärdatei speichern ............................. Eine DataTable in einer XML-Datei abspeichern ............................. Die RemotingFormat-Property des DataSets nutzen .......................... Master-Detail-Beziehungen im DataGrid anzeigen ........................... Im DataView sortieren und filtern ........................................... Im DataView nach Datensätzen suchen ...................................... Zwischen DataTable und DataReader umwandeln ........................... Steuerelemente manuell an ein DataSet binden .............................. Datensätze im Detail-Formular editieren ..................................... Tabellen mittels ComboBox verknüpfen .................................... Spalten und Zeilen im DataGridView formatieren ........................... DataReader in ListView anzeigen ........................................... 1165 1168 1171 1174 1175 1177 1180 1185 1190 1193 1196 1199 1201 1203 1204 1206 1211 1212 1214 1217 1221 1223 1225 1228 1231 1235 1236 1239 1241 1243 1245 1248 1253 1259 1263 1265 – Diese Rezepte finden Sie nur im E-Book – 20 Bonuskapitel im E-Book R427 R428 R429 R430 R431 Bilder aus der Datenbank anzeigen .......................................... Ein ungebundenes DataSet erzeugen ........................................ Ein typisiertes DataSet im Designer erzeugen ................................ Ein DataSet in ein typisiertes DataSet füllen ................................. Eine LINQ to SQL-Abfrage realisieren ...................................... 17 ASP.NET/Webdienste R432 R433 R434 R435 R436 R437 R438 R439 R440 R441 R442 R443 R444 R445 R446 R447 R448 R449 R450 R451 R452 R453 R454 R455 R456 R457 R458 R459 R460 1269 1271 1274 1277 1280 ....................................................... 1285 Eine einfache Website programmieren ....................................... Tabellen mit der Table-Komponente erstellen ................................ Daten zwischen Web Forms austauschen .................................... Informationen über den Browser ermitteln ................................... Die Bildschirmauflösung des Clients ermitteln ............................... Das Browser-Fenster maximieren ........................................... Cookies in ASP.NET-Anwendungen verwenden ............................. HTML-Ausgaben an den Client senden ..................................... Bilder/Dateien an den Client senden ......................................... Die IP-Adresse des Clients abfragen ........................................ Die Anzahl der Seitenaufrufe eines Users ermitteln .......................... Auf den Fehlercode 404 reagieren ........................................... Variante 1: Alternative Fehlerseite einblenden ............................ Variante 2: Zentrale Fehlerbehandlung ................................... Die Validierung temporär deaktivieren ...................................... Den Eingabefokus bei Validierung setzen .................................... Eine clientseitige Validierung realisieren .................................... Die Zellen in einem GridView formatieren .................................. Ein GridView mit Bildlaufleisten realisieren ................................. Einen Mouseover-Effekte im GridView realisieren ........................... Auf fehlende Daten im GridView reagieren .................................. Daten einfach ins MS Excel-Format exportieren ............................. Berechnungen in GridView-Zeilen realisieren ............................... Spaltensummen im GridView berechnen .................................... Währungswerte im GridView korrekt anzeigen .............................. Eine Validierung im GridView realisieren ................................... Mit einem Popup-Fenster Detaildaten anzeigen .............................. Sicherheitsabfrage vor dem Löschen realisieren .............................. E-Mail-Versand in ASP.NET realisieren ..................................... Verzeichnisbäume mit der TreeView anzeigen ............................... Datenaustausch zwischen ClientScript und Server ........................... 1285 1291 1298 1301 1303 1305 1306 1308 1310 1311 1311 1313 1313 1314 1315 1316 1316 1317 1319 1320 1321 1322 1325 1326 1328 1329 1331 1335 1336 1338 1341 – Diese Rezepte finden Sie nur im E-Book – Bonuskapitel im E-Book R461 R462 R463 R464 R465 R466 R467 R468 R469 R470 R471 R472 R473 R474 R475 R476 R477 R478 R479 R480 R481 R482 R483 R484 R485 R486 R487 R488 Dateien auf den Server uploaden ............................................ Ein ASP.NET-Menü dynamisch erzeugen .................................... Die Browser-Kopfzeile zur Laufzeit ändern ................................. Einen Zeilenumbruch im Label-Control realisieren .......................... HTML-Zeichenfolgen im Browser anzeigen ................................. Die Browser-Scrollposition wiederherstellen ................................ Dateien eines Unterverzeichnisses auflisten .................................. MouseOver-Effekte für Controls realisieren ................................. Server Controls zur Laufzeit erzeugen ....................................... Doppelklicks auf Schaltflächen verhindern .................................. Das Browserfenster per Client-Skript schließen .............................. Ein einfaches ASP.NET User Control programmieren ........................ Grafikausgaben per User Control realisieren ................................. Die Upload-Begrenzung ändern ............................................. Eine Webseite per JavaScript drucken ....................................... Ein Projekt auf den IIS exportieren .......................................... Ärger mit den Cookies vermeiden ........................................... Einen XML-Webdienst programmieren ..................................... Einen Webdienst-Client erstellen ............................................ Datenbankzugriffe mit Webdiensten realisieren .............................. Webdienst entwerfen .................................................... Web-Client (Windows Forms) ........................................... Web-Client (Web Forms) ................................................ Einen Webverweis aktualisieren ............................................. Authentifikation für Webdienste nutzen ..................................... Caching in Webdiensten realisieren ......................................... WebMethodAttribute.CacheDuration ..................................... Verwendung des Cache-API ............................................. Den Microsoft IIS nachträglich installieren .................................. Nachinstallieren IIS 7 bzw. 7.5 (Windows 7) .............................. Nachinstallieren IIS8 (Windows 8) ....................................... Die AJAX-Controls verwenden ............................................. Datenbindung mittels EntityDataSource realisieren .......................... Den QueryExtender zum Filtern verwenden ................................. Tipps & Tricks ............................................................. Ärger mit Leerzeichen in URLs vermeiden ............................... Testen, ob der Nutzer angemeldet ist ..................................... Den Namen des aktuellen Nutzers ermitteln .............................. – Diese Rezepte finden Sie nur im E-Book – 21 1343 1344 1346 1346 1347 1348 1349 1351 1352 1354 1356 1357 1360 1364 1364 1365 1367 1368 1373 1377 1378 1384 1388 1393 1394 1395 1395 1397 1398 1398 1399 1400 1402 1408 1412 1412 1413 1413 22 Bonuskapitel im E-Book Eine zufällige Datei zur Anzeige auswählen .............................. 1413 Einen Datei speichern unter-Dialog anzeigen lassen ....................... 1414 Anwendungseinstellungen in der Web.config sichern ..................... 1415 18 Reporting Services R489 R490 R491 R492 R493 .......................................................... 1417 Einen einfachen Bericht entwerfen .......................................... Einen Bericht ohne Assistentenhilfe erstellen ................................ Im Bericht sortieren ........................................................ Im Bericht filtern ........................................................... Weitere Tipps & Tricks ..................................................... Trennlinien in Tabellen realisieren ........................................ Währungsformatierung .................................................. Datumsformatierung ..................................................... Wechselnde Zeilenfarben zuweisen ...................................... Anzeige von True und False in Boolean-Feldern vermeiden ............... Anzeige von Nullwerten unterdrücken .................................... Abstand zwischen zwei Tabellenspalten vergrößern ....................... Die lästigen Sekunden beseitigen ......................................... Nachkommastellen festlegen ............................................. Werte berechnen und formatieren ........................................ Weitere Informationen zu den Microsoft Reporting Services .............. 1417 1422 1425 1429 1432 1432 1433 1433 1433 1433 1434 1434 1434 1434 1434 1434 19 Komplexbeispiele ........................................................... 1435 R494 Kleines Textverarbeitungsprogramm ........................................ MDI-Rahmenfenster ..................................................... MDI-Kindfenster ........................................................ Menüs zusammenführen ................................................. PopUp-Menü hinzufügen ................................................ Quellcode für MDI-Hauptfenster ......................................... Quellcode für MDI-Kindfenster .......................................... Programmtest ........................................................... Dokumente drucken ..................................................... Bemerkungen zur RichTextBox .......................................... R495 Buchungssystem mit Random Access Datei ................................. Klassenübersicht ........................................................ Entwurf der Bedienoberfläche ........................................... Entwicklung des Geschäftsmodells ...................................... 1435 1436 1436 1438 1440 1441 1443 1447 1447 1452 1452 1452 1453 1453 – Diese Rezepte finden Sie nur im E-Book – Bonuskapitel im E-Book Programmieren der Bedienoberfläche .................................... Programmtest ........................................................... Ein einfacher FTP-Client ................................................... Bedienoberfläche ........................................................ Auflisten des FTP-Verzeichnisses ........................................ Herunterladen einer Datei per FTP ....................................... Heraufladen einer Datei per FTP ......................................... Löschen einer Datei im FTP-Verzeichnis ................................. Bedienfunktionen ....................................................... Programmtest ........................................................... Lösen von linearen Gleichungssystemen .................................... Ein wenig Theorie ....................................................... Komponente CTBMatrix ................................................ Benutzeroberfläche ...................................................... Programmtest ........................................................... Rechner für komplexe Zahlen ............................................... Was sind komplexe Zahlen? ............................................. Programmierung der Klasse CComplexN ................................. Bedienoberfläche für Testprogramm ...................................... Quellcode für Testprogramm ............................................. Programmtest ........................................................... Formel-Rechner mit dem CodeDOM ........................................ Basisversion des Rechners ............................................... Assembly auf Festplatte speichern ....................................... Berechnungsergebnisse als Diagramm darstellen .......................... Einen mehrschichtigen Entwurf praktizieren ................................. Die Datenstruktur ....................................................... Die Ereignisdefinition ................................................... Die Ereignislogik ........................................................ Das User-Interface ....................................................... Die Datenpersistenz ..................................................... Die Verwaltung des Pattern .............................................. Test und Diskussion ..................................................... Ein zweiter Observer .................................................... Zusammenfassung ....................................................... 1462 1464 1466 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1477 1480 1482 1482 1484 1486 1487 1489 1491 1492 1497 1500 1505 1505 1507 1509 1511 1514 1515 1517 1519 1519 ............................................................................. 1521 R496 R497 R498 R499 R500 Index 23 – Diese Rezepte finden Sie nur im E-Book – Vorwort Vorwort Liebe Leserin, lieber Leser, hat ein "Kochbuch" im Internet-Zeitalter überhaupt noch eine Chance, wo man doch über Suchmaschinen auf (fast) jede Frage dutzende von Lösungen gratis frei Haus erhält? Die Antwort ist heute, mehr denn je, ein eindeutiges Ja. Gerade in der ausufernden Flut von Lösungen, die über das Internet abrufbar sind, liegt ein gravierendes Problem: Es wird immer schwieriger, die Spreu vom Weizen zu trennen. Vielleicht halten Sie gerade deshalb die fünfte Auflage unseres erstmalig 2003 erschienenen Visual C#-Kochbuchs in den Händen. Gegenüber dem Vorgängertitel zur Version 2010 wurde es komplett überarbeitet, von verstaubten Inhalten befreit und um zahlreiche neue Rezepte ergänzt, die sich zum großen Teil auf die Neuerungen der Version 2012 (WinRT-Programmierung) beziehen. Eingeflossen sind weiterhin die kritischen Hinweise unserer Leser zu unseren bisher veröffentlichten C#-Büchern, die Erfahrungen von Lehrgängen und Workshops und, last but not least, die gesammelten Erkenntnisse unserer eigenen Programmiertätigkeit. HINWEIS: Simple Rezepte, wie "Eine Variable deklarieren" etc. werden Sie hier nicht finden, denn derartig elementare Beispiele sind Gegenstand einführender Literatur. Hier verweisen wir Sie auf unser im gleichen Verlag erschienenes Buch "Visual C# 2012 – Grundlagen und Profiwissen". Bis auf wenige Ausnahmen sind alle Rezepte lauffähige Programme mit eigener Bedienoberfläche, die sofortiges Ausprobieren und eigene Experimente mit "Aha-Effekt" ermöglichen, wobei sich der inhaltliche Bogen vom einfachen Tipp & Trick für den Einsteiger bis hin zur komplexen ProfiApplikation spannt. Wenn es um Rezepte geht, bei denen die Sprache C# und nicht die Programmoberfläche im Vordergrund steht, verwenden wir als Testumgebung vorrangig eine Windows Forms-Anwendung, bei neueren Rezepten aber auch eine WPF-Anwendung. 26 Vorwort Zum Buch-Inhalt Wie immer haben wir uns auch in diesem Buch bemüht, nur qualitativ hochwertige Lernbeispiele und Problemlösungen zu bringen, ohne dabei das zu wiederholen, was Ihnen die zu Visual C# 2012 bzw. Visual Studio 2012 allgemein verfügbaren Quellen ohnehin schon bieten. Die mehr als 500 Rezepte des Kochbuchs sind in 19 Themengruppen übersichtlich angeordnet und mit treffsicheren Titeln ausgestattet. Der Index sollte ein Übriges dazu beitragen, schnell an die gewünschten Informationen zu kommen. ■ Kapitel 1 ist speziell für den Programmier-Einsteiger gedacht. Es enthält einen kleinen Crashkurs, in welchem in mehreren sorgfältig aufeinander abgestimmten Rezepten wichtige Grundlagen der Sprache C# allgemeinverständlich erläutert werden. ■ Kapitel 2 widmet sich speziellen Features der Sprache C#, wie z.B. Stringverarbeitung, Parameterübergabe, Delegates und LINQ sowie deren Anwendungen bei verschiedensten Problemstellungen (mathematische Berechnungen, Datum/Zeit, Sortieren, Suchen ...). ■ Kapitel 3 enthält verschiedene Rezepte zu den Grundlagen der objektorientierten Programmierung und zur Komponentenentwicklung. ■ Kapitel 4 enthält Rezepte zur optimalen Programmierung von Windows Forms Oberflächen und befasst sich mit den Besonderheiten der wichtigsten Steuerelemente. ■ Kapitel 5 bezieht sich auf Rezepte zur WPF-Technologie, dem langfristigen Nachfolger der Windows Forms. ■ Kapitel 6 widmet sich den Silverlight-Anwendungen. ■ Kapitel 7 enthält zahlreiche Rezepte zu den unter Visual Studio 2012 neu eingeführten Windows Store Apps. ■ Kapitel 8 befasst sich mit diversen Hardware- und Programmier-Schnittstellen. ■ Kapitel 9 enthält eine Sammlung von Rezepten für den Zugriff auf wichtige Funktionen des Windows-Betriebssystems. ■ Kapitel 10 kapselt ein Sammelsurium von Rezepten zu Themen, die sich in keines der anderen Kapitel sinnvoll einordnen lassen, z.B. Setup-Projekte. Die folgenden Kapitel sind aus Umfangsgründen nicht im gedruckten Teil des Buchs untergebracht, sie sind nur im E-Book enthalten. ■ Kapitel 11 umfasst eine unterhaltsame Serie von aufeinander abgestimmten Beispielen, die bis in die gehobenen Regionen der OOP führen (Microsoft Event Pattern!). ■ Kapitel 12 enthält zahlreiche Rezepte zu den verschiedensten Problemen, wie sie bei der Grafikprogrammierung auftreten. ■ Kapitel 13 ist dem Problemkreis Drucken/Druckeransteuerung gewidmet, wie er immer wieder Gesprächsstoff in Entwickler-Foren ist. Vorwort 27 ■ Kapitel 14 befasst sich mit dem Dateizugriff unter .NET. ■ Kapitel 15 enthält zahlreiche Rezepte rund um den Problemkreis XML. ■ Kapitel 16 widmet sich verschiedensten Aspekten des Datenbankzugriffs unter ADO.NET. ■ Kapitel 17 umfasst zahlreiche Rezepte, die (fast) alle Facetten der Web-Programmierung unter ASP.NET ausleuchten. ■ Kapitel 18 enthält einige nützliche Rezepte, die den Einstieg in die Technologie der Microsoft Reporting Services erleichtern sollen. ■ Kapitel 19 bildet den krönenden Abschluss des Kochbuchs. In größeren praxistauglichen Beispielapplikationen werden verschiedene Programmiertechniken im Zusammenhang demonstriert. Download und Ausführung Alle Rezepte dieses Buchs können Sie sich unter der Adresse LINK: http://www.doko-buch.de herunterladen. Beim Nachvollziehen der Rezepte beachten Sie bitte Folgendes: ■ Kopieren Sie die Rezepte auf die Festplatte. Wenn Sie auf die Projektmappendatei (*.sln) klicken, wird Visual Studio in der Regel automatisch geöffnet und das jeweilige Beispiel wird in die Entwicklungsumgebung geladen, wo Sie es z.B. mittels F5-Taste kompilieren und starten können. ■ Einige wenige Datenbankprojekte verwenden absolute Pfadnamen, die Sie vor dem Kompilieren des Beispiels erst noch anpassen müssen. ■ Für einige Beispiele sind ein installierter Microsoft SQL Server Express LocalDB sowie der Microsoft Internet Information Server (ASP.NET) erforderlich. ■ Um mit den WinRT-Projekten arbeiten zu können, müssen Sie Visual Studio 2012 in jedem Fall unter Windows 8 ausführen. ■ Beachten Sie die zu einigen Beispielen beigefügten Liesmich.txt-Dateien, die Sie auf besondere Probleme hinweisen. Kontakt zu den Autoren Nobody is perfect, und so können auch die Autoren nicht ausschließen, dass sich auf den über 1500 Seiten dieser oder jener Fehler eingeschlichen hat oder dass etwas Wichtiges einfach vergessen wurde. 28 Vorwort HINWEIS: Auch wenn Sie das "Haar in der Suppe" gefunden haben sollten – wir sind für alle sachlich fundierten Hinweise und Kritiken dankbar! Wenn Sie Vorschläge oder Fragen zum Buch haben, können Sie uns gern über unsere Website kontaktieren: LINK: www.doko-buch.de Programmieren lernt man nur durch das unermüdliche Ausprobieren von Beispielen. Und so wünschen wir Ihnen – neben dem notwendigen Stehvermögen – auch zahlreiche freudige "Aha"-Erlebnisse auf Ihrem Weg zum erfolgreichen C#-Programmierer! Walter Doberenz und Thomas Gewinnus Wintersdorf und Frankfurt/O., im Januar 2013 1 Kleiner C#-Anfängerkurs Kapitel 1 Kleiner C#-Anfängerkurs Vor Beginn des Windows-Zeitalters wurden Programme geschrieben, die für jede Ein- und Ausgabe von Daten eine neue Textzeile in einem Bildschirmfenster (Konsole) erzeugten. Dieses Verhalten war ein Erbe aus jener Zeit, als lediglich Fernschreiber für die Ein- und Ausgabefunktionen von Computern zur Verfügung standen. Aber auch heute noch kann es für den Newcomer durchaus sinnvoll sein, wenn er für seine ersten Schritte die gute alte Konsolentechnik verwendet. So kann er sich doch auf das zunächst Wesentliche, nämlich die Logik von C#-Befehlen, konzentrieren, ohne von der erdrückenden Vielfalt der Windows-Oberfläche abgelenkt zu werden. Die folgende Serie von sechs absoluten Anfängerbeispielen benutzt zunächst Konsolenanwendungen, um einige grundlegende C#-Sprachelemente zu demonstrieren. Die letzten beiden Beispiele zeigen dann den Übergang zur zeitgemäßen Windows-Programmierung. HINWEIS: Der "Kleine C#-Crashkurs" kann keinesfalls das Studium einführender C#-Literatur ersetzen (siehe z.B. unser Buch [Visual C# 2012 – Grundlagen und Profiwissen]), sondern ist lediglich als Ergänzung zu verstehen. R1 Das EVA-Prinzip anwenden Jeder Weg, und ist er noch so weit, beginnt mit dem ersten Schritt! Für den Anfang soll uns deshalb ein ganz einfaches Beispiel genügen. Aufgabenstellung Nacheinander sind drei positive ganze Zahlen einzugeben. Das Programm soll die größte der drei Zahlen ermitteln und das Ergebnis anzeigen.