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
|