Jürgen Bayer Informatik  
Home      Dienstleistungen      Referenzen      Kontakt     

Das C# 2010 Codebook

Jürgen Bayer
Addison Wesley 2010
ISBN-10: 3827329035
ISBN-13: 978-3827329035
ca. 1350 Seiten

Buchseite bei Addison-Wesley

Bei Amazon bestellen

Buchdaten anfordern

Das Erratum

Mailingliste des Erratums

Buchbeschreibung

Mit der Version 4.0 sind das .NET Framework und C# wieder einmal mächtiger geworden und enthalten mittlerweile eine nur schwer überschaubare Menge an Klassen, Strukturen und anderen Typen. Die Übersicht darüber zu behalten und immer zu wissen, welche Features für ein gegebenes Problem verwendet werden können und wie diese eingesetzt werden, ist nicht immer einfach. Häufig hilft das Internet, aber eine Suche nach einer Problemlösung kostet manchmal viel Zeit und ergibt auch nicht immer eine zufriedenstellende Lösung.

In diese Bresche springt das C# 2010 Codebook. Es bietet in 418 Rezepten Lösungen zu Programmieraufgaben, die in der Praxis immer wieder auftreten. Viele dieser Rezepte entwickelten sich in meiner jahrelangen Praxisarbeit mit .NET. Andere entstanden aus Newsgroup-Beiträgen, aus Fragen in meinen Seminaren und Workshops oder durch die Mitarbeit von Lesern älterer Auflagen. Natürlich lösen die Rezepte dieses Buchs nicht alle möglichen Probleme. Die immer angestrebte Praxisorientiertheit der Rezepte führt allerdings mit recht großer Wahrscheinlichkeit dazu, dass viele Ihrer Programmierprobleme gelöst werden. Als Zugabe finden Sie in den Buchdaten auch einige umfangreiche Artikel, die die verwendeten Technologien erläutern.

Die Rezepte der vierten Auflage des C# Codebook enthalten alle Rezepte der vorherigen Auflage. Diese Rezepte wurden natürlich – wenn sinnvoll – überarbeitet und an C# 4.0 und .NET 4.0 angepasst. Bei den meisten Rezepten betraf die Überarbeitung neue C#-Sprachfeatures wie dynamische Programmierung und optionale Argumente. Bei einigen der alten Rezepte habe ich Verbesserungen einfließen lassen, die sich im Lauf der Zeit (auch durch die freundliche Mitwirkung einiger Leser) ergeben haben. Die Änderungen gegenüber dem C# 2008 Codebook finden Sie im Anhang.

Das Buch enthält insgesamt 29 neue, teilweise sehr umfangreiche Rezepte. Dazu gehören neben einigen speziellen Rezepten solche zu neuen Features wie dynamische Programmierung und optionale Parameter. Das Kapitel »Nebenläufige Programmierung« (vormals »Threading«) wurde komplett auf Basis der Task Parallel Library (TPL) und mit den meisten neuen Rezepten überarbeitet und erweitert.

32 Rezepte wurden für das C# 2010 Codebook wesentlich überarbeitet, wobei neue Features berücksichtigt, Rezepte erweitert oder (selten) Fehler beseitigt wurden. Im Kapitel »LINQ, LINQ to SQL und Entity Framework« betraf das die Erweiterung der Rezepte auf das Entity Framework. Einige Rezepte wie »XML-Dokumente gegen ein XML-Schema auf Gültigkeit überprüfen« wurden auch massiv umgebaut. Daneben habe ich einige weitere Rezepte leicht überarbeitet.
Einige Rezepte werden Ihnen möglicherweise sehr einfach erscheinen. Diese beschreiben meist grundlegende Techniken, wie zum Beispiel das Formatieren einer Zahl, die besonders von C#-Novizen des Öfteren nachgefragt werden. Diese Rezepte sollen aber eben genau die Zielgruppe der C#-Anfänger ansprechen. Die Vielzahl der Rezepte behandelt allerdings Probleme, deren Lösungen komplex sind und die auch von erfahrenen C#-Entwicklern nachgelesen werden müssen.

Bei der Erstellung der einzelnen Rezepte habe ich wesentlich mehr Wert auf Qualität als auf Quantität gelegt. Besonders wichtig war mir, dass Sie das, was dort programmiert ist, auch verstehen. Deshalb wird jedes Rezept erläutert, wobei ich auch auf die vielen möglichen Fallstricke eingehe. Außerdem enthält der entsprechende Quellcode jedes Rezepts Kommentare, die die Programmierung kurz erläutern. Daneben finden Sie keine »Quick and Dirty«-Lösung in diesem Buch. Ich habe jedes Rezept sehr intensiv getestet und potenzielle Fehlerquellen beseitigt. An manchen Rezepten habe ich mehrere Tage gearbeitet. Ich denke, das sagt genug über meinen Anspruch aus, die optimale Lösung mit der höchst möglichen Qualität zu liefern.

Inhalt

1 Einführung

1.1 Zum Buch

1.2 Recherche-Möglichkeiten

2 Basics

1 Zahlen formatieren

2 Negative und positive Zahlen unterschiedlich formatieren

3 (Ganz-)Zahlen hexadezimal darstellen

4 Hexadezimale Zahlen in dezimale Zahlen konvertieren

5 Ganzzahlen dual darstellen

6 Dualzahlen in Ganzzahlen konvertieren

7 Zahlen in verschiedenen Notationen darstellen

8 Zahlen kaufmännisch runden

9 Den kleinsten und den größten Wert eines numerischen Datentyps ermitteln

10 Mit großen Zahlen arbeiten

11 Mit komplexen Zahlen rechnen

12 Gradmaß in das Bogenmaß umrechnen

13 Bogenmaß in das Gradmaß umrechnen

14 Umstellen der aktuellen Kultur

15 Die verfügbaren Kulturen auslesen

16 Zahlen in verschiedenen Länderformaten darstellen

17 Einen Bytewert in ein besser lesbares Format umwandeln

18 Überprüfen, ob ein String eine gültige Zahl speichert

19 Überprüfen, ob ein String ein gültiges Datum speichert

20 Über reguläre Ausdrücke flexibel und schnell in Strings suchen

21 Überprüfen, ob ein String eine gültige E-Mail-Adresse speichert

22 Zufallszahlen erzeugen

23 High- und Low-Word lesen

24 High- und Low-Word setzen

25 Beep ausgeben

26 Strings ohne Berücksichtigung der Groß- bzw. Kleinschreibung vergleichen

27 Teilstrings flexibel ersetzen

28 Strings an vorgegebenen Trennzeichen auftrennen

29 Mehrere (Leer-)Zeichen in ein (Leer-)Zeichen konvertieren

30 Erstes Zeichen aller Wörter im String groß- und die restlichen Zeichen kleinschreiben

31 Anzahl der Wörter in einem String ermitteln

32 Alle Wörter eines Strings extrahieren

33 Einen String an einem rechten Rand wortgerecht umbrechen

34 String auf die ersten Wörter bis zu einer Maximallänge kürzen

35 Teilstring nur dann ersetzen, wenn dieser am Anfang eines Strings gespeichert ist

36 Linken und rechten Teilstring extrahieren

37 Zahlen aus einem String extrahieren

38 Überprüfen, ob ein String mit einer Zahl beginnt

39 Zufalls-String berechnen

40 Konstantennamen einer Aufzählung als String auslesen

41 Strings in Aufzählungswerte konvertieren

42 String in Byte-Array umwandeln

43 Byte-Array in String lesen

44 Byte-Arrays und Bit-Strings in leicht eingebbare (BASE32-)Strings konvertieren

45 Auflistungen und Arrays sortieren

46 Auflistungen und Arrays performant durchsuchen

47 Typisierte Auflistungen erzeugen

48 Schnelle Auflistung mit Schlüssel- und Indexzugriff

49 Das Programm für eine definierte Zeit anhalten

50 Optionale Parameter korrekt einsetzen

51 Dynamische Programmierung sinnvoll einsetzen

52 Die Nachrichten einer Ausnahme und ihrer inneren Ausnahmen ermitteln

53 Ausnahmen in Anwendungen korrekt (und global) auswerten

3 Datum und Zeit

54 Aktuelles Datum und aktuelle Uhrzeit ermitteln

55 Datumswerte formatieren

56 Datumswerte in verschiedenen Länderformaten ausgeben

57 Datum in das ISO-Format konvertieren

58 Datumswerte vergleichen

59 Die Differenz zwischen zwei Datumswerten berechnen

60 Alter in ganzen Jahren berechnen

61 Datumswerte addieren und subtrahieren

62 Eine Zeitangabe in einem String in ein Datum mit der Basis DateTime.Min umwandeln

63 Die Anzahl der Tage eines Monats berechnen

64 Die Anzahl der Tage eines Jahres berechnen

65 Den Wochentag eines Datums ermitteln

66 Den Namen eines Wochentags ermitteln

67 Den Namen eines Monats ermitteln

68 Den ersten und letzten Tag der Woche eines Datums berechnen

69 Den ersten und den letzten Tag eines Monats berechnen

70 Das Quartal eines gegebenen Datums berechnen

71 Den ersten und den letzten Tag eines Quartals berechnen

72 Ermitteln, ob ein Jahr ein Schaltjahr ist

73 Ermitteln der ISO-Kalenderwoche

74 Ermitteln, mit welchem Datum eine Kalenderwoche beginnt

75 Anzahl der Kalenderwochen eines Jahres bestimmen

76 Systemdatum und -zeit setzen

77 Atomuhr-Datum inklusive Uhrzeit von einem NIST-Server abfragen

78 Datum normalisieren

79 Deutsche Feiertage und andere besondere Tage berechnen

80 Ermitteln, ob ein bestimmter Tag ein Feiertag ist

81 Zeit genau messen

82 Eine Eingabe daraufhin überprüfen, ob diese ein Datum ergeben kann

83 Eine Eingabe daraufhin überprüfen, ob diese eine Zeit ergeben kann

84 Datumswerte fehlerfrei zwischen Systemen mit verschiedenen Zeitzonen austauschen

85 Mit Zeitzonen arbeiten

86 Mit Kalendersystemen arbeiten

4 Anwendungen, Anwendungskonfiguration, Prozesse und Dienste

87 Den Dateinamen der Anwendung ermitteln

88 Das Verzeichnis der Anwendung ermitteln

89 Befehlszeilenargumente auswerten

90 User Account Control (UAC) berücksichtigen

91 Ausnahmen global behandeln

92 Den Speicherverbrauch von .NET-Anwendungen verstehen und gegebenenfalls reduzieren

93 Konfigurationsdaten in der .config-Datei verwalten

94 Konfigurationsdaten über einen eigenen SettingsProvider in einer XML-Datei verwalten

95 Konfigurationsdaten aus dem appSettings-Element der .config-Datei lesen

96 Externe Konfigurationsdateien lesen und schreiben

97 Konfigurationsdaten in eigenen Abschnitten speichern

98 Anwendungskonfiguration über eine eigene XML-Datei

99 Daten aus der Registry lesen und in die Registry schreiben

100 Verhindern, dass eine Anwendung mehrfach gestartet werden kann

101 Aktivieren einer laufenden Anwendung

102 Auflisten aller laufenden Prozesse eines Computers

103 Auflisten aller laufenden Anwendungen eines Computers

104 Informationen über die Dienste eines Computers auslesen

105 Dienste starten, anhalten, fortfahren und stoppen

106 Ermitteln, ob eine Anwendung ausgeführt wird

107 Anwendungen starten

108 Dateien mit der assoziierten Anwendung öffnen

109 Starten einer anderen Anwendung und warten, bis diese beendet ist

110 Konsolenanwendungen starten und die Ausgabe auswerten

111 Andere Anwendungen beenden

112 Java-Anwendungen starten

113 Die Betätigung der Tastatur simulieren

114 Lizenzschlüssel generieren und auswerten

5 Dateisystem

115 Den Dateinamen einer Windows-Anwendung ermitteln

116 Den Dateinamen einer Klassenbibliothek ermitteln

117 Ordner einer Windows-Anwendung ermitteln

118 Ordner einer Klassenbibliothek ermitteln

119 Einen Dateinamen für eine temporäre Datei erzeugen

120 Den Ordner für temporäre Dateien ermitteln

121 Windows-(Spezial-)Ordner auslesen

122 Das .NET-Framework-Verzeichnis ermitteln

123 Einen Dateinamen mit anderer Endung ermitteln

124 Relativen Pfad aus einem absoluten Pfad ermitteln

125 Absoluten Pfad aus einem relativen Pfad ermitteln

126 Überprüfen, ob eine Pfadangabe gültig ist

127 Die logischen Laufwerke des Systems ermitteln

128 Den Typ der Laufwerke eines Systems ermitteln

129 Alle Laufwerke eines bestimmten Typs ermitteln

130 Größe und freien Speicherplatz eines Laufwerks ermitteln

131 Überprüfen, ob ein Ordner existiert

132 Ordner erzeugen

133 Ordner mit .NET-Features kopieren

134 Ordner mit Fortschrittsdialog, Abbruchmöglichkeit und Überschreib-Nachfrage über SHFileOperation kopieren

135 Ordner mit .NET-Features ohne Abbruch bei einer Ausnahme kopieren

136 Ordner umbenennen

137 Ordner verschieben

138 Ordner löschen

139 Ordnergröße ermitteln

140 Ordnergröße aller direkten Unterordner ermitteln

141 Überprüfen, ob eine Datei existiert

142 Dateien in einem Ordner und seinen Unterordnern suchen

143 Programmdateien in den Systempfaden suchen

144 Dateien kopieren

145 Dateien umbenennen

146 Dateien verschieben

147 Dateien löschen

148 Dateien vergleichen

149 Ordner vergleichen

150 Die Größe einer Datei ermitteln

151 Dateiattribute auslesen

152 Dateiattribute (zum Beispiel den Schreibschutz) setzen oder aufheben

153 Die Erstell- und Zugriffsdaten einer Datei lesen und setzen

154 Die Version einer Datei auslesen

155 Den kurzen (8.3-)Dateinamen einer Datei auslesen

156 Alle Dateien eines Ordners auflisten

157 Dateien und Ordner mit Fortschrittsdialog, Abbruchmöglichkeit und Überschreibnachfrage umbenennen oder verschieben

158 Dateien und Ordner in den Papierkorb verschieben

159 Größe des Papierkorbs und Anzahl der Dateien im Papierkorb ermitteln

160 Verknüpfungen anlegen

161 Das Dateisystem überwachen

6 Text-, binäre und Zip-Dateien

162 Textdateien lesen

163 Textdateien schreiben

164 Texte an Textdateien anfügen

165 Textdateien ändern

166 Binäre Dateien lesen

167 Binäre Dateien schreiben

168 Binäre Dateien Base64-codieren

169 Base64-codierte Strings in Dateien umwandeln

170 Komprimieren von Daten mit .NET-Klassen

171 Dekomprimieren von Daten mit .NET-Klassen

172 (ZIP-)Komprimieren von Daten mit #ziplib

173 (ZIP-)Dekomprimieren von Daten mit #ziplib

174 Dateien in ZIP-Archive komprimieren

175 (ZIP-)Archive aus einem Ordner erzeugen

176 Dateiinformationen aus (ZIP-)Archiven auslesen

177 (ZIP-)Archive entpacken

7 XML

178 XML-Dokumente über LINQ to XML lesen

179 XML-Dokumente mit Namensraum über LINQ to XML lesen

180 XML-Dokumente über ein XmlReader-Objekt lesen

181 XML-Dokumente über das X-DOM lesen

182 Datums-, Zahl- und boolesche Werte in einem XML-Dokument nach dem W3C-Standard schreiben und lesen

183 Leer- und Nullwerte in einem XML-Dokument schreiben und lesen

184 XML-Dokumente beim Einlesen gegen ein XML-Schema (oder DTD) prüfen

185 XML-Dokumente gegen ein XML-Schema auf Gültigkeit überprüfen

186 XDOM-Objekte gegen ein XML-Schema prüfen

187 XML-Dokumente gegen ein Schematron-Schema prüfen

188 Gezielt über XPath auf Elemente in einem XML-Dokument ohne Namensraum zugreifen

189 Gezielt über XPath auf Elemente in einem XML-Dokument mit Namensraum zugreifen

190 XML-Dokumente mit einem XmlWriter erzeugen

191 XML-Dokumente über das X-DOM erzeugen und ändern

192 XML-Dokumente über LINQ to XML erzeugen

193 XML-Dokumente über ein DataTable- oder DataSet-Objekt erzeugen

194 XML-Dokumente über ein DataTable- oder ein DataSet-Objekt ändern

195 Binäre Daten in einem XML-Dokument speichern

196 Base64-codierte Bilder (binäre Daten) aus XML-Dokumenten auslesen

197 XML-Dokumente über LINQ to XML transformieren

198 XML-Dokumente über XSL-Dokumente transformieren

8 System

199 Den Namen des Computers ermitteln

200 Systempfade herausfinden

201 Windows-Version auslesen

202 Windows-Hauptversion ermitteln

203 Ermitteln, ob ein Programm unter 64 Bit ausgeführt wird

204 Hardware-IDs ermitteln

205 Die Prozessorgeschwindigkeit ermitteln

206 Informationen über den Arbeitsspeicher auslesen

207 Die Version des aktuellen Service-Packs ermitteln

208 Installierte Programme auflisten

209 Informationen zu den parallelen Schnittstellen des Systems auslesen

210 Informationen zu den seriellen Schnittstellen des Systems auslesen

211 Ermitteln der Soundkarten des Systems

212 Windows herunterfahren und neu starten

213 Die verfügbaren Leistungsindikatoren auslesen

214 Den Arbeitsspeicher überwachen

215 Speicherauslastung und CPU-Belastung des aktuellen Prozesses überwachen

216 Speicherauslastung und CPU-Belastung des aktuellen Prozesses in ein Trace-Protokoll schreiben

217 Eigene Leistungsindikatoren implementieren

218 Monitor abschalten, in den Energiesparmodus schalten und wieder einschalten

219 System-Hotkeys registrieren und auswerten

9 Internet

220 Status der Internetverbindung abfragen

221 Pingen – Ermitteln, ob eine Internetverbindung besteht

222 TCP- und ICMP-Prüfsumme berechnen

223 Internetverbindung öffnen und schließen

224 Die IP-Adressen des Computers herausfinden

225 E-Mails über einen SMTP-Server versenden

226 E-Mails über MAPI bzw. Outlook versenden

227 Browser starten

228 Webseiten (HTML-Dokumente) in der Anwendung darstellen

229 Dateien von einem Web- oder FTP-Server über eine WebClient-Instanz downloaden

230 Dateien von einem Webserver über eine HttpWebRequest-Instanz downloaden

231 Proxyserver-Verbindungsdaten angeben

232 Intelligenter Up- und Download mit BITS

233 Die Größe einer Datei von einem FTP-Server abfragen

234 Dateien zu einem Web- oder FTP-Server hochladen

235 FTP-Verzeichnisse auslesen

236 Dateien und Ordner auf einem FTP-Server löschen

237 Ordner auf einem FTP-Server erstellen

10 Windows.Forms

238 Formulare ohne Titelleiste

239 (Rahmenlose) Formulare über den Clientbereich verschiebbar machen

240 Unbewegbare Formulare mit Titelleiste

241 Andockende Formulare

242 Ändern des Systemmenüs – Entfernen des Schließen-Eintrags und -Schalters

243 Formulare verlaufend füllen

244 Formulare mit speziellen Formen

245 Formulare mit dem Aero-Glaseffekt ausstatten

246 Splash-Formulare

247 Ermitteln, auf welchen Monitoren ein Formular angezeigt wird

248 Ein Formular auf einem sekundären Bildschirm öffnen

249 Die Bildschirmposition eines Steuerelements ermitteln

250 Die optimale Position eines Formulars oder eines Steuerelements bezogen auf ein Steuerelement ermitteln

251 Das Hauptformular einer Anwendung ermitteln

252 Menüs in der Laufzeit erstellen oder erweitern

253 Steuerelemente mit transparentem Hintergrund

254 TextBox automatisch beim Eintritt selektieren

255 TextBox auf Zahleneingaben beschränken

256 Auf Return in einer TextBox reagieren

257 Bei der Betätigung der Return-Taste die Tab-Taste simulieren

258 Die Position des Eingabecursors in einer TextBox, RichTextBox oder MaskedTextBox ermitteln

259 Die angezeigten Zeilen einer MultiLine-TextBox auslesen

260 ComboBox mit Autovervollständigung

261 Daten neben den Einträgen einer ListBox oder ComboBox verwalten

262 ListBox mit ToolTip für längere Einträge

263 ListView sortieren

264 Knoten einer Ebene in einem TreeView-Steuerelement vertauschen

265 Einzelne Knoten eines TreeView-Steuerelements sortieren

266 Die Werte einzelner Zellen in einem DataGridView setzen und lesen

267 Ein DataGridView anpassen

268 Ein DataGridView mit eigenen Spalten am Beispiel einer DateTimePicker-Spalte

269 Feiertage im MonthCalendar-Steuerelement darstellen

270 Drag&Drop von Dateien und Ordnern

271 Ein Ordner-Dialog

272 In einem Nicht-Tastatur-Ereignis herausfinden, ob eine bestimmte Taste betätigt ist

273 In einem eigenen Steuerelement verhindern, dass die Cursor-Tasten einen Fokuswechsel bewirken

274 Hooking – eine MessageBox mit definierten Schalterbeschriftungen versehen

11 WPF

275 Fenster ohne Titelleiste

276 Den Handle eines WPF-Fensters ermitteln

277 Den Clientbereich eines WPF-Fensters ermitteln

278 Fenster über den Clientbereich verschiebbar machen

279 Windows-Nachrichten verarbeiten

280 Beim Maximieren eines Fensters ohne Titelleiste die Taskbar berücksichtigen

281 Fenster verlaufend füllen

282 Hintergrund mit Textur

283 Fenster mit speziellen Formen

284 Fenster mit dem Aero-Glaseffekt ausstatten

285 Fenster in einer Schleife aktualisieren

286 Fortschritts-Overlay über dem Programm-Icon in der Taskbar anzeigen

287 Splash-Fenster

288 Die aktuelle DPI-Einstellung der Bildschirme des Systems ermitteln

289 Ein Fenster auf einem sekundären Bildschirm öffnen

290 Das Hauptfenster einer Anwendung ermitteln

291 Die absolute und die Bildschirmposition eines Steuerelements ermitteln

292 Die optimale Position eines Fensters bezogen auf ein Steuerelement ermitteln

293 Beim Öffnen eines Fensters den Fokus setzen

294 Das Einfügen über die Zwischenablage abfangen

295 TextBox-Inhalt beim Eintritt komplett selektieren

296 TextBox auf Zahleingaben beschränken

297 Das TextChanged-Ereignis bei der ComboBox abfangen

298 Bei der Betätigung der Return-Taste die Tab-Taste simulieren

299 Drag&Drop von Dateien und Ordnern

300 In einem Nicht-Tastatur-Ereignis herausfinden, ob eine bestimmte Taste betätigt ist

12 LINQ, LINQ to SQL und Entity Framework

301 Dynamische Abfragen

302 Ungleichheitsverknüpfungen

303 Kreuzproduktverknüpfungen

304 Kommaseparierte Dateien (CSV-Dateien) verarbeiten

305 Probleme mit der Benennung in LINQ-to-SQL-Modellen lösen

306 LINQ-to-SQL- und Entity-Framework-Abfragen mit LIKE

307 SQL direkt ausführen

308 Die SQL-Anweisung einer LINQ-Abfrage evaluieren

13 Benutzer und Gruppen

309 Informationen zu den Benutzern eines Computers oder einer Domäne auflisten

310 Überprüfen, ob ein Benutzerkonto existiert

311 Benutzergruppen eines Computers oder einer Domäne auflisten

312 Benutzer ermitteln, die einer Gruppe angehören

313 Gruppen eines Benutzers abfragen

314 Eigenschaften eines Benutzers auslesen

315 Überprüfen, ob der aktuelle Benutzer einer in Windows vordefinierten Gruppe (zum Beispiel Administratoren) angehört

316 Gruppen anlegen

317 Benutzer anlegen

318 Eigenschaften eines Benutzers ändern

319 Benutzer einer Gruppe zuweisen

320 Benutzer aus einer Gruppe entfernen

321 Benutzer löschen

322 Gruppe löschen

323 Den Namen des aktuellen Benutzers auslesen

324 Ein Programm unter einem spezifischen Benutzerkonto ausführen

14 Sicherheit

325 Strings sicher im Programm verwalten

326 Daten symmetrisch ver- und entschlüsseln

327 Asymmetrisches Verschlüsseln mit RSA

328 Sicherer Schlüsselaustausch mit ECDH

329 Daten mit Hashing-Verfahren verschlüsseln

15 Multimedia

330 Wave-Dateien abspielen

331 Multimedia-Dateien in einer Windows.Forms-Anwendung über MCI abspielen

332 Multimedia-Dateien in einer WPF-Anwendung abspielen

16 Bildbearbeitung

333 Speicherschonend in einer Windows.Forms-Anwendung mit Bildern umgehen

334 Bitmap-Objekte aus BitmapSource-Objekten erzeugen

335 BitmapSource-Objekte aus Bitmap-Objekten erzeugen

336 Das Format eines Bilds auslesen

337 Bild-Metadaten auslesen

338 Das Aufnahmedatum eines Bilds auslesen

339 Eingelesene Bilder im Originalformat speichern

340 Bild in Byte-Array umwandeln

341 Byte-Array in Bild umwandeln

342 Bilder aus der Zwischenablage auslesen

343 Screenshot erstellen

344 Bilder skalieren

345 Thumbnails aus Bildern erzeugen

346 Bilder konvertieren

347 (JPEG-)Bilder mit definierter Qualität speichern

348 Bilder drehen, neigen und spiegeln

349 Bildausschnitte auslesen

350 Farben von Bildern auf andere Farben mappen

351 Farbinformationen von Bildern gezielt verändern

352 Ein Negativ eines Bilds erzeugen

353 Die einzelnen Pixel eines Bilds bearbeiten

354 Farbbilder in Graustufenbilder umwandeln

17 Zeichnen

355 GDI-Probleme vermeiden

356 Einstellen der Grafikqualität unter GDI

357 Rechtecke mit abgerundeten Ecken zeichnen

358 Pfeile zeichnen

359 Transparente Bilder und Grafiken erzeugen

360 Bilder mit Schatten zeichnen

361 Schräg zeichnen und Zeichenobjekte rotieren

362 Den Drehpunkt eines Rechtecks so ermitteln, dass die Ecke links oben an derselben Position bleibt

363 Text an einer definierten Position in 90-Grad-Schritten gedreht ausgeben

364 Die Breite und Höhe eines auszugebenden Textes bestimmen

365 Texte zentriert oder rechtsbündig zeichnen

366 Strings beim Zeichnen wortgerecht umbrechen

18 COM-Interop mit Office

367 Laufende COM-Komponenten-Instanzen referenzieren

368 Word-Dokumente öffnen

369 Word-Dokumente basierend auf einer Dokumentenvorlage erzeugen, füllen, ausdrucken und speichern

370 Excel-Arbeitsmappen erzeugen

371 Daten in Excel-Arbeitsmappen erweitern

372 Performantes Lesen und Schreiben in Excel-Arbeitsmappen

373 Kontakte aus Outlook auslesen

19 Reflection und Serialisierung

374 Informationen über den Aufrufer in einer Methode oder einem Konstruktor ermitteln

375 Programmcode dynamisch ausführen

376 Assemblys dynamisch erzeugen

377 Assemblys dynamisch laden

378 Objekte über eine Datenvertrag-Serialisierung serialisieren

379 Objekte binär serialisieren und deserialisieren

380 Objekte nach XML serialisieren und von XML deserialisieren

381 Font- und andere (serialisierbare) Objekte in einen String serialisieren

20 Nebenläufige Programmierung

382 Schleifen und LINQ-Abfragen korrekt parallelisieren

383 Parallele Schleifen vorzeitig beenden

384 Die Performance von parallelen Schleifen und PLINQ-Abfragen optimieren

385 Einfache Tasks ausführen

386 Parameter an Tasks übergeben

387 Tasks aufrufen, die ein Ergebnis berechnen

388 Auf das Beenden eines Tasks reagieren und Tasks verketten

389 Tasks, parallele Schleifen und PLINQ-Abfragen abbrechen

390 Ausnahmen in Tasks verstehen und behandeln

391 In einem Task oder Thread sicher auf die Anwendungsoberfläche zugreifen

392 Parent- und Child-Tasks einsetzen

393 Tasks synchronisieren

394 Das Deadlock-Risiko vermindern und Deadlocks lokalisieren

395 Das Producer-Consumer-Muster implementieren

396 Einfache nebenläufige Programmierung über einen BackgroundWorker

397 Das ereignisbasierte asynchrone Entwurfsmuster implementieren

21 Datenbankprogrammierung

398 Die Anzahl der Datensätze ermitteln, die eine Abfrage in einer Datenbank ergibt

399 Datenbanken erzeugen

400 Abfragen der automatisch vergebenen ID eines neuen Datensatzes

401 Bilder und andere binäre Daten in einer Datenbank verwalten

402 Backup und Restore einer SQL-Server-Datenbank über SMO

403 Die verfügbaren SQL Server ermitteln

404 Die Datenbanken einer SQL-Server-Instanz abfragen

22 Anhang

21.1 Änderungen gegenüber dem C# Codebook 2008

21.2 Die ersten 255 Zeichen des Unicode-Zeichensatzes