Sie sind hier
E-Book

Visual C# 2012 - Grundlagen und Profiwissen

AutorThomas Gewinnus, Walter Doberenz
VerlagCarl Hanser Fachbuchverlag
Erscheinungsjahr2012
Seitenanzahl2207 Seiten
ISBN9783446435216
FormatPDF
KopierschutzWasserzeichen/DRM
GerätePC/MAC/eReader/Tablet
Preis39,99 EUR
VISUAL C# 2012 //
- Für Einsteiger, Fortgeschrittene und Profis
- Mit Informationen und Lösungen, nach denen Sie anderswo vergeblich suchen
- Alle Beispiele aus dem Buch unter: www.doko-buch.de
Sprachumfang und Einsatzgebiete von Visual C# decken mit jeder neuen Version ein immer breiteres, kaum mehr überschaubares Spektrum ab. Dieses Übungs- und Nachschlagewerk führt Sie mit sicherer Hand quer durch den Dschungel der .NET-Programmierung auf Basis von Visual C# 2012.
Schwerpunkt dieser Neuauflage ist die Entwicklung von Apps für Windows 8. Neben einer fundierten Einführung erleichtern viele Praxisbeispiele den Einstieg in dieses komplexe Thema.
Die insgesamt 43 Kapitel des Buches gruppieren sich in acht Themenkomplexe:
Teil I: Grundlagen der Programmierung mit Visual C# 2012
Teil II: Technologien der Programmentwicklung
Teil III: WPF-Anwendungen
Teil IV: Windows Store Apps
Teil V: Weitere Technologien
Teil VI: Windows Forms
Teil VII: ASP.NET
Teil VIII: Silverlight
Die Kapitel innerhalb eines Teils bilden eine logische Aufeinanderfolge, können aber auch quergelesen werden. Im Praxisteil eines jeden Kapitels werden anhand realer Problemstellungen die behandelten Programmiertechniken im Zusammenhang demonstriert.
AUS DEM INHALT:
C#-Sprachfeatures, OOP, LINQ // Dateien & Dateisystem // Asynchrone Programmierung & Task Parallel Library // WPF & XAML // Windows Store Apps & WinRT // XML, ADO.NET, DataSet, MS Event Pattern // Konsolen-Anwendungen // GUI-Programmierung mit Windows Forms // Web-Applikationen mit ASP.NET & Silverlight // Verteilen von Anwendungen

Kaufen Sie hier:

Horizontale Tabs

Blick ins Buch
Inhaltsverzeichnis
Visual C# 2012 - Grundlagen und Profiwissen4
Vorwort52
Zum Buchinhalt52
Zu den Neuigkeiten in Visual Studio 201253
Weitere Bücher von uns54
Zu den Codebeispielen54
Nobody is perfect55
1 Einstieg in Visual Studio 201258
1.1 Die Installation von Visual Studio 201258
1.1.1 Überblick über die Produktpalette58
Visual Studio 2012 Express58
Visual Studio 2012 Professional59
Visual Studio 2012 Premium60
Visual Studio 2012 Ultimate60
1.1.2 Anforderungen an Hard- und Software60
1.2 Unser allererstes C#-Programm61
1.2.1 Vorbereitungen61
Compilerpfad eintragen61
1.2.2 Quellcode schreiben63
1.2.3 Programm kompilieren und testen64
1.2.4 Einige Erläuterungen zum Quellcode64
Befehlszeilen und Gültigkeitsbereiche64
using-Anweisung65
class-Anweisung65
WriteLine- und ReadLine-Methoden65
Assemblierung65
1.2.5 Konsolenanwendungen sind langweilig65
1.3 Die Windows-Philosophie66
1.3.1 Mensch-Rechner-Dialog66
1.3.2 Objekt- und ereignisorientierte Programmierung66
Objekte (Objects)67
Eigenschaften (Properties)67
Methoden (Methods)67
Ereignisse (Events)68
1.3.3 Programmieren mit Visual Studio 201268
1.4 Die Entwicklungsumgebung Visual Studio 201269
1.4.1 Neues Projekt69
1.4.2 Die wichtigsten Fenster70
Der Projektmappen-Explorer71
Der Designer72
Der Werkzeugkasten72
Das Eigenschaften-Fenster72
Das Codefenster73
1.5 Microsofts .NET-Technologie73
1.5.1 Zur Geschichte von .NET73
Warum eine extra Programmiersprache?74
Wie funktioniert eine .NET-Sprache?75
1.5.2 .NET-Features und Begriffe76
.NET-Framework76
Die Common Language Specification (CLS)77
Das Common Type System (CTS)77
Die Common Language Runtime (CLR)78
Namespaces ersetzen Registry79
Assemblierungen80
Zugriff auf COM-Komponenten80
Metadaten und Reflexion80
Attribute81
Serialisierung82
Multithreading82
Objektorientierte Programmierung83
1.6 Wichtige Neuigkeiten in Visual Studio 201283
1.6.1 Die neue Visual Studio 2012 Entwicklungsumgebung83
Neues Outfit der Toolbar83
Veränderter Projektmappen-Explorer84
Registerkartenverwaltung der geöffneten Dateien85
Suchen überall85
Neuer Verweis Manager-Dialog85
Projekt-Kompatibilität85
Neue Projekttypen86
Multi-Monitor -Unterstützung86
Zusätzliche Tools und Features86
1.6.2 Neuheiten im .NET Framework 4.586
WinRT-Anwendungen86
Portable Klassenbibliotheken86
Parallele Computervorgänge87
Internet87
WPF87
WCF87
1.6.3 C# 5.0 – Sprache und Compiler88
Asynchrone Methoden88
Caller Information88
1.7 Praxisbeispiele88
1.7.1 Windows Forms-Anwendung für Einsteiger88
1. Etappe: Visueller Entwurf der Bedienoberfläche89
2. Etappe: Zuweisen der Objekteigenschaften90
3. Etappe: Verknüpfen der Objekte mit Ereignissen90
4. Etappe: Programm kompilieren und testen91
Bemerkungen92
1.7.2 Windows-Anwendung für fortgeschrittene Einsteiger93
1. Etappe: Visueller Entwurf der Bedienoberfläche93
2. Etappe: Zuweisen der Objekteigenschaften94
3. Etappe: Verknüpfen der Objekte mit Ereignissen95
4. Etappe: Programm kompilieren und testen98
IntelliSense – die hilfreiche Fee99
Hilfe ein Fehler!99
2 Grundlagen der Sprache C#102
2.1 Grundbegriffe102
2.1.1 Anweisungen102
2.1.2 Bezeichner103
2.1.3 Schlüsselwörter104
2.1.4 Kommentare104
Einzeilige Kommentare104
Mehrzeilige Kommentare105
2.2 Datentypen, Variablen und Konstanten105
2.2.1 Fundamentale Typen105
2.2.2 Wertetypen versus Verweistypen106
Wertetypen107
Verweistypen107
2.2.3 Benennung von Variablen107
2.2.4 Deklaration von Variablen107
Initialisierte Variablen108
Typinferenz108
2.2.5 Typsuffixe109
2.2.6 Zeichen und Zeichenketten110
char110
string110
2.2.7 object-Datentyp112
2.2.8 Konstanten deklarieren112
2.2.9 Nullable Types113
Initialisieren von Wertetypen mit null113
Zuweisungen mit dem ??-Operator114
2.2.10 Typinferenz114
2.2.11 Gültigkeitsbereiche und Sichtbarkeit115
2.3 Konvertieren von Datentypen115
2.3.1 Implizite und explizite Konvertierung115
as-Konverierungsoperator117
2.3.2 Welcher Datentyp passt zu welchem?117
2.3.3 Konvertieren von string118
ToString-Methode118
String in Zahl verwandeln119
EVA-Prinzip119
2.3.4 Die Convert-Klasse120
2.3.5 Die Parse-Methode120
2.3.6 Boxing und Unboxing121
Boxing121
Unboxing121
2.4 Operatoren122
2.4.1 Arithmetische Operatoren123
Standard-Operatoren123
Inkrement- und Dekrement-Operatoren123
2.4.2 Zuweisungsoperatoren124
2.4.3 Logische Operatoren125
Vergleichsoperatoren125
Boolesche Operatoren126
Kurzschlussauswertung127
Bitweise Operationen127
2.4.4 Rangfolge der Operatoren128
2.5 Kontrollstrukturen129
2.5.1 Verzweigungsbefehle129
Klassische Entscheidungsanweisungen129
Ergänzung131
Sprungbefehle132
2.5.2 Schleifenanweisungen132
for-Schleifen133
while-Schleife133
do-Schleife133
Vorzeitiges Verlassen einer Schleife134
2.6 Benutzerdefinierte Datentypen135
2.6.1 Enumerationen135
Deklaration135
Zugriff135
2.6.2 Strukturen136
Deklaration136
Datenzugriff137
Struktur versus Klasse138
2.7 Nutzerdefinierte Methoden138
2.7.1 Methoden mit Rückgabewert139
Deklaration139
Aufruf139
2.7.2 Methoden ohne Rückgabewert140
Deklaration140
Aufruf140
2.7.3 Parameterübergabe mit ref141
Noch einmal – aber bitte langsam142
2.7.4 Parameterübergabe mit out142
2.7.5 Methodenüberladung143
Bemerkungen143
2.7.6 Optionale Parameter144
2.7.7 Benannte Parameter145
2.8 Praxisbeispiele146
2.8.1 Vom PAP zur Konsolenanwendung146
Programmablaufplan146
Programmierung146
Kompilieren147
Test147
2.8.2 Ein Konsolen- in ein Windows-Programm verwandeln148
Oberfläche148
Quelltext149
Test150
Bemerkungen150
2.8.3 Schleifenanweisungen verstehen150
Oberfläche150
Quellcode150
Test152
2.8.4 Benutzerdefinierte Methoden überladen152
Oberfläche153
Quellcode153
Test155
3 OOP-Konzepte156
3.1 Kleine Einführung in die OOP156
3.1.1 Historische Entwicklung156
Strukturierte Programmierung157
Objektorientiertes Programmieren157
3.1.2 Grundbegriffe der OOP158
Objekt158
Klasse159
Instanz159
Kapselung159
Wiederverwendbarkeit159
Vererbung159
Polymorphie160
3.1.3 Sichtbarkeit von Klassen und ihren Mitgliedern160
Klassen160
Klassenmitglieder161
3.1.4 Allgemeiner Aufbau einer Klasse161
3.1.5 Das Erzeugen eines Objekts162
Referenzieren und Instanziieren163
Klassische Initialisierung164
Objekt-Initialisierer164
Arbeiten mit dem Objekt165
Zerstören des Objekts165
3.1.6 Einführungsbeispiel165
Vorbereitungen165
Klasse definieren166
Bemerkungen167
Objekt erzeugen und initialisieren168
Objekt verwenden168
Unterstützung durch die IntelliSense168
Objekt testen169
Bemerkungen170
3.2 Eigenschaften170
3.2.1 Eigenschaften mit Zugriffsmethoden kapseln170
Deklarieren von Eigenschaften171
Zugriff172
Bemerkung172
3.2.2 Berechnete Eigenschaften172
3.2.3 Lese-/Schreibschutz174
3.2.4 Property-Accessoren175
3.2.5 Statische Felder/Eigenschaften175
Konstante Felder177
3.2.6 Einfache Eigenschaften automatisch implementieren178
3.3 Methoden179
3.3.1 Öffentliche und private Methoden179
3.3.2 Überladene Methoden180
3.3.3 Statische Methoden180
Bemerkungen182
3.4 Ereignisse182
3.4.1 Ereignis hinzufügen183
Ereignis deklarieren184
Ereignis instanziieren184
Ereignis auslösen185
3.4.2 Ereignis verwenden186
Ereignisbehandlung schreiben187
Ereignisbehandlung anmelden188
Bemerkungen188
3.5 Arbeiten mit Konstruktor und Destruktor189
3.5.1 Konstruktor und Objektinitialisierer189
Deklaration190
Aufruf190
Objektinitialisierer191
Statischer Konstruktor191
3.5.2 Destruktor und Garbage Collector192
3.5.3 Mit using den Lebenszyklus des Objekts kapseln195
3.5.4 Verzögerte Initialisierung195
3.6 Vererbung und Polymorphie196
3.6.1 Klassendiagramm196
3.6.2 Method-Overriding198
3.6.3 Klassen implementieren198
Basisklasse CKunde198
Subklasse CPrivatKunde199
Subklasse CFirmenKunde200
Testoberfläche201
3.6.4 Implementieren der Objekte201
Praxistest202
3.6.5 Ausblenden von Mitgliedern durch Vererbung203
3.6.6 Allgemeine Hinweise und Regeln zur Vererbung205
3.6.7 Polymorphes Verhalten206
Praxistest208
3.6.8 Die Rolle von System.Object209
3.7 Spezielle Klassen210
3.7.1 Abstrakte Klassen210
Abstrakte Methoden210
3.7.2 Versiegelte Klassen211
3.7.3 Partielle Klassen212
3.7.4 Statische Klassen213
3.8 Schnittstellen (Interfaces)214
3.8.1 Definition einer Schnittstelle214
3.8.2 Implementieren einer Schnittstelle215
3.8.3 Abfragen, ob Schnittstelle vorhanden ist216
3.8.4 Mehrere Schnittstellen implementieren216
3.8.5 Schnittstellenprogrammierung ist ein weites Feld216
3.9 Praxisbeispiele217
3.9.1 Eigenschaften sinnvoll kapseln217
Oberfläche217
Quellcode (CKreis)218
Quellcode (Form1)219
Test219
Bemerkungen220
3.9.2 Eine statische Klasse anwenden220
Oberfläche220
Quellcode220
Test221
3.9.3 Vom fetten zum schlanken Client222
Oberfläche222
Quellcode (Fat Client)223
Test226
Bemerkungen226
Abmagerungskur für den fetten Client227
Quellcode für CRegister228
Quellcode für CRechenmodul229
Quellcode für Form1232
Test233
Bemerkungen233
3.9.4 Schnittstellenvererbung verstehen233
Klassendiagramme234
Oberfläche Form1234
Quellcode CPerson235
Quellcode CKunde235
Quellcode Form1236
Test237
Quellcode IPerson237
Quellcode CKunde238
Bemerkungen238
4 Arrays, Strings, Funktionen240
4.1 Datenfelder (Arrays)240
4.1.1 Array deklarieren240
4.1.2 Array instanziieren241
4.1.3 Array initialisieren241
4.1.4 Zugriff auf Array-Elemente242
Indexüberprüfung242
Oberen Array-Index ermitteln243
4.1.5 Zugriff mittels Schleife243
for-Schleife243
foreach-Schleife243
4.1.6 Mehrdimensionale Arrays244
Dimensionsgrenzen ermitteln245
Mehrdimensional initialisieren245
4.1.7 Zuweisen von Arrays246
4.1.8 Arrays aus Strukturvariablen247
4.1.9 Löschen und Umdimensionieren von Arrays248
Felder löschen248
Array löschen248
Array-Dimensionen ändern249
4.1.10 Eigenschaften und Methoden von Arrays249
Wichtige Eigenschaften und Methoden von Array-Variablen250
Wichtige Methoden der Array-Klasse250
4.1.11 Übergabe von Arrays251
Arrays als Parameter251
Rückgabe von Arrays251
4.2 Verarbeiten von Zeichenketten252
4.2.1 Zuweisen von Strings252
4.2.2 Eigenschaften und Methoden von String-Variablen253
Strings in Char-Arrays verwandeln255
4.2.3 Wichtige Methoden der String-Klasse255
Strings zerlegen und wieder zusammenstückeln256
4.2.4 Die StringBuilder-Klasse257
Grundlegendes257
Eigenschaften258
Methoden259
4.3 Reguläre Ausdrücke259
4.3.1 Wozu werden reguläre Ausdrücke verwendet?260
4.3.2 Eine kleine Einführung260
4.3.3 Wichtige Methoden/Eigenschaften der Klasse Regex261
Die Match-Methode261
Eigenschaften des Match-Objekts262
Die NextMatch-Methode262
Die Matches-Methode262
Der Alternator262
4.3.4 Kompilierte reguläre Ausdrücke263
4.3.5 RegexOptions-Enumeration264
4.3.6 Metazeichen (Escape-Zeichen)264
4.3.7 Zeichenmengen (Character Sets)265
4.3.8 Quantifizierer267
4.3.9 Zero-Width Assertions268
String- und Zeilengrenzen (^ und $)268
Wortgrenzen (b)269
Positiver Lookahead (?=expr)269
Negativer Lookahead (?!expr)270
Positiver (?<=expr) und negativer (?271
4.3.10 Gruppen271
4.3.11 Text ersetzen272
4.3.12 Text splitten273
Trennzeichen im Ergebnis273
4.4 Datums- und Zeitberechnungen274
4.4.1 Die DateTime-Struktur274
Grundlegendes274
4.4.2 Wichtige Eigenschaften von DateTime-Variablen275
4.4.3 Wichtige Methoden von DateTime-Variablen276
4.4.4 Wichtige Mitglieder der DateTime-Struktur276
4.4.5 Konvertieren von Datumstrings in DateTime-Werte277
4.4.6 Die TimeSpan-Struktur278
4.5 Mathematische Funktionen279
4.5.1 Überblick279
4.5.2 Zahlen runden280
4.5.3 Winkel umrechnen280
4.5.4 Potenz- und Wurzeloperationen280
4.5.5 Logarithmus und Exponentialfunktionen281
4.5.6 Zufallszahlen erzeugen281
4.6 Zahlen- und Datumsformatierungen282
4.6.1 Anwenden der ToString-Methode282
Zahlenformatierungen283
Datumsformatierungen283
4.6.2 Anwenden der Format-Methode284
4.7 Praxisbeispiele286
4.7.1 Zeichenketten verarbeiten286
Oberfläche286
Quellcode287
Test288
Bemerkungen288
4.7.2 Zeichenketten mit StringBuilder addieren289
Oberfläche289
Quellcode Klasse CTest289
Quellcode Form1291
Test292
Bemerkungen292
4.7.3 Reguläre Ausdrücke testen292
Oberfläche292
Quellcode293
Test294
Bemerkungen294
4.7.4 Methodenaufrufe mit Array-Parametern294
Oberfläche294
Quellcode294
Test297
Bemerkungen297
5 Weitere Sprachfeatures298
5.1 Namespaces (Namensräume)298
5.1.1 Ein kleiner Überblick298
5.1.2 Einen eigenen Namespace einrichten299
5.1.3 Die using-Anweisung300
5.1.4 Namespace Alias301
5.1.5 Namespace Alias Qualifizierer301
5.2 Operatorenüberladung302
5.2.1 Syntaxregeln302
5.2.2 Praktische Anwendung303
5.3 Collections (Auflistungen)304
5.3.1 Die Schnittstelle IEnumerable304
IEnumerable305
ICollection305
IList306
5.3.2 ArrayList306
Weitere Eigenschaften und Methoden307
5.3.3 Hashtable308
5.3.4 Indexer308
5.4 Generics310
5.4.1 Klassische Vorgehensweise311
Miserable Typsicherheit bei den alten Collections311
Viel Aufwand für eigene generische Collection-Klassen312
Warum uns auch ein Array nicht weiterhilft312
5.4.2 Generics bieten Typsicherheit312
Einen einfachen generischen Typ deklarieren312
Generischen Typ verwenden313
5.4.3 Generische Methoden313
5.4.4 Iteratoren314
5.5 Generische Collections315
5.5.1 List-Collection statt ArrayList315
5.5.2 Vorteile generischer Collections316
5.5.3 Constraints316
5.6 Das Prinzip der Delegates316
5.6.1 Delegates sind Methodenzeiger317
5.6.2 Einen Delegate-Typ deklarieren317
5.6.3 Ein Delegate-Objekt erzeugen317
5.6.4 Delegates vereinfacht instanziieren319
5.6.5 Anonyme Methoden320
5.6.6 Lambda-Ausdrücke321
5.6.7 Lambda-Ausdrücke in der Task Parallel Library323
Bemerkungen324
5.7 Dynamische Programmierung325
5.7.1 Wozu dynamische Programmierung?325
5.7.2 Das Prinzip der dynamischen Programmierung325
5.7.3 Optionale Parameter sind hilfreich328
5.7.4 Kovarianz und Kontravarianz329
5.8 Weitere Datentypen329
5.8.1 BigInteger329
5.8.2 Complex332
5.8.3 Tuple<>332
5.8.4 SortedSet<>333
5.9 Praxisbeispiele334
5.9.1 ArrayList versus generische List334
Oberfläche335
Quellcode (mit ArrayList)335
Quellcode (mit generischer List)336
Test337
Bemerkungen338
5.9.2 Generische IEnumerable-Interfaces implementieren338
Oberfläche338
Quellcode CTestListe339
Quellcode Form1340
Test340
Bemerkungen341
5.9.3 Delegates, anonyme Methoden, Lambda Expressions341
Oberfläche341
Quellcode342
Test344
5.9.4 Dynamischer Zugriff auf COM Interop345
Oberfläche345
Quellcode (klassische Programmierung)345
Quellcode (dynamische Programmierung)346
Test346
Bemerkungen347
6 Einführung in LINQ348
6.1 LINQ-Grundlagen348
6.1.1 Die LINQ-Architektur348
LINQ-Implementierungen349
6.1.2 Anonyme Typen349
6.1.3 Erweiterungsmethoden351
6.2 Abfragen mit LINQ to Objects352
6.2.1 Grundlegendes zur LINQ-Syntax352
6.2.2 Zwei alternative Schreibweisen von LINQ Abfragen353
6.2.3 Übersicht der wichtigsten Abfrage-Operatoren354
6.3 LINQ-Abfragen im Detail355
6.3.1 Die Projektionsoperatoren Select und SelectMany356
Select356
SelectMany357
6.3.2 Der Restriktionsoperator Where357
6.3.3 Die Sortierungsoperatoren OrderBy und ThenBy358
OrderBy/OrderByDescending358
ThenBy/ThenByDescending358
Reverse359
6.3.4 Der Gruppierungsoperator GroupBy359
6.3.5 Verknüpfen mit Join362
6.3.6 Aggregat-Operatoren362
Count362
Sum363
6.3.7 Verzögertes Ausführen von LINQ-Abfragen364
6.3.8 Konvertierungsmethoden365
6.3.9 Abfragen mit PLINQ365
Probleme mit der Sortierfolge367
6.4 Praxisbeispiele368
6.4.1 Die Syntax von LINQ-Abfragen verstehen368
Oberfläche369
Quellcode369
Test370
Bemerkungen370
6.4.2 Aggregat-Abfragen mit LINQ371
Oberfläche371
Quellcode372
Test373
Bemerkungen373
7 Zugriff auf das Dateisystem376
7.1 Grundlagen376
7.1.1 Klassen für den Zugriff auf das Dateisystem377
7.1.2 Statische versus Instanzen-Klasse377
7.2 Übersichten378
7.2.1 Methoden der Directory-Klasse378
7.2.2 Methoden eines DirectoryInfo-Objekts379
7.2.3 Eigenschaften eines DirectoryInfo-Objekts379
7.2.4 Methoden der File-Klasse379
7.2.5 Methoden eines FileInfo-Objekts380
7.2.6 Eigenschaften eines FileInfo-Objekts381
7.3 Operationen auf Verzeichnisebene381
7.3.1 Existenz eines Verzeichnisses/einer Datei feststellen381
7.3.2 Verzeichnisse erzeugen und löschen382
7.3.3 Verzeichnisse verschieben und umbenennen382
7.3.4 Aktuelles Verzeichnis bestimmen383
7.3.5 Unterverzeichnisse ermitteln383
7.3.6 Alle Laufwerke ermitteln383
7.3.7 Dateien kopieren und verschieben384
7.3.8 Dateien umbenennen385
7.3.9 Dateiattribute feststellen385
Attribute von Verzeichnissen und Dateien386
7.3.10 Verzeichnis einer Datei ermitteln387
7.3.11 Alle im Verzeichnis enthaltenen Dateien ermitteln387
7.3.12 Dateien und Unterverzeichnisse ermitteln387
7.4 Zugriffsberechtigungen388
7.4.1 ACL und ACE388
7.4.2 SetAccessControl-Methode389
7.4.3 Zugriffsrechte anzeigen389
7.5 Weitere wichtige Klassen390
7.5.1 Die Path-Klasse390
7.5.2 Die Klasse FileSystemWatcher391
7.6 Datei- und Verzeichnisdialoge392
7.6.1 OpenFileDialog und SaveFileDialog393
Anzeige und Auswertung393
Wichtige Eigenschaften393
Dateifilter394
7.6.2 FolderBrowserDialog394
Die SpecialFolder-Enumeration394
7.7 Praxisbeispiele395
7.7.1 Infos über Verzeichnisse und Dateien gewinnen395
Oberfläche395
Quelltext396
Test398
7.7.2 Eine Verzeichnisstruktur in die TreeView einlesen399
Oberfläche399
Quellcode399
Test400
7.7.3 Mit LINQ und RegEx Verzeichnisbäume durchsuchen401
Oberfläche401
Quellcode402
Test404
Bemerkungen405
8 Dateien lesen und schreiben406
8.1 Grundprinzip der Datenpersistenz406
8.1.1 Dateien und Streams406
8.1.2 Die wichtigsten Klassen407
8.1.3 Erzeugen eines Streams408
8.2 Dateiparameter408
8.2.1 FileAccess408
8.2.2 FileMode408
8.2.3 FileShare409
8.3 Textdateien409
8.3.1 Eine Textdatei beschreiben bzw. neu anlegen409
WriteAllLines/AppendAllText410
8.3.2 Eine Textdatei lesen411
ReadAllLines/ReadLines411
8.4 Binärdateien412
8.4.1 Lese-/Schreibzugriff412
8.4.2 Die Methoden ReadAllBytes und WriteAllBytes413
8.4.3 Erzeugen von BinaryReader/BinaryWriter413
8.5 Sequenzielle Dateien414
8.5.1 Lesen und schreiben von strukturierten Daten414
8.5.2 Serialisieren von Objekten415
8.6 Dateien verschlüsseln und komprimieren416
8.6.1 Das Methodenpärchen Encrypt/Decrypt416
8.6.2 Verschlüsseln unter Vista/Windows 7/Windows 8416
8.6.3 Verschlüsseln mit der CryptoStream-Klasse417
8.6.4 Dateien komprimieren418
8.7 Memory Mapped Files419
8.7.1 Grundprinzip419
8.7.2 Erzeugen eines MMF420
CreateFromFile-Methode420
CreateNew-Methode421
8.7.3 Erstellen eines Map View421
8.8 Praxisbeispiele422
8.8.1 Auf eine Textdatei zugreifen422
Oberfläche422
Quellcode422
Test424
8.8.2 Einen Objektbaum persistent speichern425
Klassendiagramm425
Klasse CBestellung426
Klasse CPerson427
Klasse CKunde427
Klasse CFirma428
Klasse CPersistent428
Form1429
Test431
Anzeige mit DataGridView431
8.8.3 Ein Memory Mapped File (MMF) verwenden432
Oberfläche432
Quellcode432
Test433
Bemerkungen434
9 Asynchrone Programmierung436
9.1 Übersicht436
9.1.1 Multitasking versus Multithreading437
9.1.2 Deadlocks438
9.1.3 Racing438
9.2 Programmieren mit Threads440
9.2.1 Einführungsbeispiel440
9.2.2 Wichtige Thread-Methoden441
9.2.3 Wichtige Thread-Eigenschaften443
9.2.4 Einsatz der ThreadPool-Klasse444
9.3 Sperrmechanismen446
9.3.1 Threading ohne lock446
9.3.2 Threading mit lock448
Ein anschauliches Beispiel449
9.3.3 Die Monitor-Klasse450
Wait und Pulse/PulseAll451
TryEnter453
9.3.4 Mutex453
9.3.5 Methoden für die parallele Ausführung sperren455
9.3.6 Semaphore455
9.4 Interaktion mit der Programmoberfläche457
9.4.1 Die Werkzeuge457
9.4.2 Einzelne Steuerelemente mit Invoke aktualisieren457
9.4.3 Mehrere Steuerelemente aktualisieren459
9.4.4 Ist ein Invoke-Aufruf nötig?459
9.4.5 Und was ist mit WPF?460
9.5 Timer-Threads461
9.6 Die BackgroundWorker-Komponente462
9.7 Asynchrone Programmier-Entwurfsmuster465
9.7.1 Kurzübersicht465
Begin...-Methode465
End...-Methode466
Die Rückrufmethode466
9.7.2 Polling466
9.7.3 Callback verwenden468
9.7.4 Callback mit Parameterübergabe verwenden469
9.7.5 Callback mit Zugriff auf die Programm-Oberfläche470
9.8 Asynchroner Aufruf beliebiger Methoden471
9.8.1 Die Beispielklasse471
9.8.2 Asynchroner Aufruf ohne Callback473
9.8.3 Asynchroner Aufruf mit Callback und Anzeigefunktion474
9.8.4 Aufruf mit Rückgabewerten (per Eigenschaft)475
9.8.5 Aufruf mit Rückgabewerten (per EndInvoke)475
9.9 Es geht auch einfacher – async und await476
9.9.1 Der Weg von Synchron zu Asynchron477
9.9.2 Achtung: Fehlerquellen!479
9.9.3 Eigene asynchrone Methoden entwickeln481
9.10 Praxisbeispiele483
9.10.1 Spieltrieb & Multithreading erleben483
Aufgabenstellung483
Oberfläche484
Quelltext LKW485
Quelltext Schiff487
Quelltext Controller490
Quelltext Global492
Quelltext Form1492
Test495
Bemerkungen496
9.10.2 Prozess- und Thread-Informationen gewinnen496
Oberfläche496
Quellcode496
Test500
9.10.3 Ein externes Programm starten501
Oberfläche501
Quelltext501
Test502
Ergänzungen502
Bemerkung503
10 Die Task Parallel Library504
10.1 Überblick504
10.1.1 Parallel-Programmierung504
10.1.2 Möglichkeiten der TPL507
10.1.3 Der CLR-Threadpool507
10.2 Parallele Verarbeitung mit Parallel.Invoke508
10.2.1 Aufrufvarianten509
10.2.2 Einschränkungen510
10.3 Verwendung von Parallel.For510
10.3.1 Abbrechen der Verarbeitung512
10.3.2 Auswerten des Verarbeitungsstatus513
10.3.3 Und was ist mit anderen Iterator-Schrittweiten?514
10.4 Collections mit Parallel.ForEach verarbeiten514
10.5 Die Task-Klasse515
10.5.1 Einen Task erzeugen515
10.5.2 Den Task starten516
10.5.3 Datenübergabe an den Task518
10.5.4 Wie warte ich auf das Ende des Task?519
10.5.5 Tasks mit Rückgabewerten521
10.5.6 Die Verarbeitung abbrechen524
Abbruch per return524
Abbruch per CancellationToken525
10.5.7 Fehlerbehandlung527
10.5.8 Weitere Eigenschaften528
Task-Id528
Status529
IsCanceled, IsCompleted, IsFaulted529
TaskCreationOptions529
10.6 Zugriff auf das User-Interface529
10.6.1 Task-Ende und Zugriff auf die Oberfläche530
10.6.2 Zugriff auf das UI aus dem Task heraus531
10.7 Weitere Datenstrukturen im Überblick533
10.7.1 Threadsichere Collections533
10.7.2 Primitive für die Threadsynchronisation534
10.8 Parallel LINQ (PLINQ)534
10.9 Die Parallel Diagnostic Tools535
10.9.1 Fenster für parallele Aufgaben535
10.9.2 Fenster für parallele Stacks536
10.9.3 IntelliTrace537
10.10 Praxisbeispiel: Spieltrieb – Version 2537
10.10.1 Aufgabenstellung537
10.10.2 Global-Klasse538
10.10.3 Controller-Klasse539
10.10.4 LKW-Klasse541
10.10.5 Schiff-Klasse542
10.10.6 Oberfläche545
11 Fehlersuche und Behandlung548
11.1 Der Debugger548
11.1.1 Allgemeine Beschreibung548
11.1.2 Die wichtigsten Fenster549
Befehlsfenster549
Direktfenster550
Lokal-Fenster550
Überwachungsfenster551
Autofenster551
Ausgabefenster551
11.1.3 Debugging-Optionen552
Einzelschritt-Modus553
Prozedurschritt-Modus553
Breakpoints553
11.1.4 Praktisches Debugging am Beispiel554
Haltepunkte setzen555
Abbruchbedingung setzen555
Trefferanzahl verwenden556
Einzelschritt-Modus556
Prozedurschritt557
Ausführen bis Rücksprung557
Auswerten von Ausdrücken557
11.2 Arbeiten mit Debug und Trace558
11.2.1 Wichtige Methoden von Debug und Trace558
Write, WriteLine, WriteIf und WriteLineIf558
IndentLevel, Indent, IndentSize und UnIndent560
Assert560
Fail561
11.2.2 Besonderheiten der Trace-Klasse562
11.2.3 TraceListener-Objekte562
TextWriterTraceListener562
App.config zur Definition verwenden563
EventLogTraceListener564
11.3 Caller Information565
11.3.1 Attribute565
11.3.2 Anwendung565
11.4 Fehlerbehandlung566
11.4.1 Anweisungen zur Fehlerbehandlung566
11.4.2 try-catch567
Ausnahmen über Fehlerklassen auswerten568
Spezifische Fehlerklassen auswerten568
Fehler erneut auslösen569
11.4.3 try-finally572
11.4.4 Das Standardverhalten bei Ausnahmen festlegen574
11.4.5 Die Exception-Klasse575
11.4.6 Fehler/Ausnahmen auslösen576
11.4.7 Eigene Fehlerklassen576
11.4.8 Exceptionhandling zur Entwurfszeit578
11.4.9 Code Contracts579
12 Einführung in WPF582
Und was ist mit Silverlight?583
12.1 Neues aus der Gerüchteküche583
12.1.1 Silverlight583
12.1.2 WPF583
12.2 Einführung584
12.2.1 Was kann eine WPF-Anwendung?584
12.2.2 Die eXtensible Application Markup Language586
Unsere erste XAML-Anwendung587
Probleme mit dem Stammelement588
Ein kleines Experiment589
Soll ich das alles von Hand eintippen?590
12.2.3 Verbinden von XAML und C#-Code590
App.xaml590
App.xaml.cs591
MainWindow.xaml592
MainWindow.xaml.cs593
Ein erster Ereignis-Handler593
Und wo ist mein Button-Objekt?594
Brauche ich unbedingt eine Trennung von Code und XAML?595
Kann ich Oberflächen auch per Code erzeugen?595
12.2.4 Zielplattformen596
12.2.5 Applikationstypen597
WPF-Anwendung597
WPF-Browseranwendungen597
12.2.6 Vor- und Nachteile von WPF-Anwendungen598
12.2.7 Weitere Dateien im Überblick598
Was sind .BAML-Dateien und was passiert damit?598
Worum handelt es sich bei den .G.CS-Dateien?599
12.3 Alles beginnt mit dem Layout601
12.3.1 Allgemeines zum Layout601
12.3.2 Positionieren von Steuerelementen603
Was sind das überhaupt für Maßangaben?603
Top/Left/Width/Height604
MinWidth/MaxWidth/MinHeight/MaxHeight604
Margin/Padding605
HorizontalAlignment/VerticalAligment606
12.3.3 Canvas607
12.3.4 StackPanel607
12.3.5 DockPanel609
12.3.6 WrapPanel611
12.3.7 UniformGrid611
12.3.8 Grid613
Definition des Grundlayouts613
Zuordnen von Kind-Elementen615
Verwendung des GridSplitters617
12.3.9 ViewBox618
12.3.10 TextBlock619
Textformatierungen620
Besonderheit von Leerzeichen/Zeilenumbrüchen621
Textausrichtung622
12.4 Das WPF-Programm622
12.4.1 Die App-Klasse622
12.4.2 Das Startobjekt festlegen623
12.4.3 Kommandozeilenparameter verarbeiten624
12.4.4 Die Anwendung beenden625
12.4.5 Auswerten von Anwendungsereignissen625
12.5 Die Window-Klasse626
12.5.1 Position und Größe festlegen626
12.5.2 Rahmen und Beschriftung627
12.5.3 Das Fenster-Icon ändern627
12.5.4 Anzeige weiterer Fenster628
12.5.5 Transparenz628
12.5.6 Abstand zum Inhalt festlegen629
12.5.7 Fenster ohne Fokus anzeigen629
12.5.8 Ereignisfolge bei Fenstern630
12.5.9 Ein paar Worte zur Schriftdarstellung630
TextOptions.TextFormattingMode631
TextOptions.TextRenderingMode632
12.5.10 Ein paar Worte zur Darstellung von Controls633
12.5.11 Wird mein Fenster komplett mit WPF gerendert?635
13 Übersicht WPF-Controls636
13.1 Allgemeingültige Eigenschaften636
13.2 Label638
13.3 Button, RepeatButton, ToggleButton639
13.3.1 Schaltflächen für modale Dialoge639
13.3.2 Schaltflächen mit Grafik640
13.4 TextBox, PasswordBox641
13.4.1 TextBox641
13.4.2 PasswordBox643
13.5 CheckBox644
13.6 RadioButton646
13.7 ListBox, ComboBox647
13.7.1 ListBox647
13.7.2 ComboBox650
13.7.3 Den Content formatieren652
13.8 Image653
13.8.1 Grafik per XAML zuweisen653
13.8.2 Grafik zur Laufzeit zuweisen654
13.8.3 Bild aus Datei laden655
13.8.4 Die Grafikskalierung beeinflussen656
13.9 MediaElement657
13.10 Slider, ScrollBar659
13.10.1 Slider659
13.10.2 ScrollBar660
13.11 ScrollViewer661
13.12 Menu, ContextMenu662
13.12.1 Menu662
13.12.2 Tastenkürzel663
13.12.3 Grafiken664
13.12.4 Weitere Möglichkeiten665
13.12.5 ContextMenu666
13.13 ToolBar667
Der ToolBarTray668
13.14 StatusBar, ProgressBar670
13.14.1 StatusBar670
13.14.2 ProgressBar672
13.15 Border, GroupBox, BulletDecorator673
13.15.1 Border673
13.15.2 GroupBox674
13.15.3 BulletDecorator675
13.16 RichTextBox677
13.16.1 Verwendung und Anzeige von vordefiniertem Text677
13.16.2 Neues Dokument zur Laufzeit erzeugen679
13.16.3 Sichern von Dokumenten679
13.16.4 Laden von Dokumenten681
13.16.5 Texte per Code einfügen/modifizieren682
13.16.6 Texte formatieren683
13.16.7 EditingCommands684
13.16.8 Grafiken/Objekte einfügen685
13.16.9 Rechtschreibkontrolle687
13.17 FlowDocumentPageViewer & Co.687
13.17.1 FlowDocumentPageViewer687
13.17.2 FlowDocumentReader688
13.17.3 FlowDocumentScrollViewer688
13.18 FlowDocument688
13.18.1 FlowDocument per XAML beschreiben689
13.18.2 FlowDocument per Code erstellen691
13.19 DocumentViewer692
13.20 Expander, TabControl693
13.20.1 Expander693
13.20.2 TabControl695
13.21 Popup696
13.22 TreeView698
13.23 ListView701
13.24 DataGrid702
13.25 Calendar/DatePicker703
DisplayMode703
DisplayDate, SelectedDate und SelectedDates703
Auswahlmodi704
Sperrtage705
Calendar skalieren706
13.26 InkCanvas707
13.26.1 Stift-Parameter definieren707
13.26.2 Die Zeichenmodi708
13.26.3 Inhalte laden und sichern709
13.26.4 Konvertieren in eine Bitmap709
13.26.5 Weitere Eigenschaften710
13.27 Ellipse, Rectangle, Line und Co.711
13.27.1 Ellipse711
13.27.2 Rectangle711
13.27.3 Line712
13.28 Browser712
13.29 Ribbon715
13.29.1 Allgemeine Grundlagen715
13.29.2 Download/Installation716
13.29.3 Erste Schritte717
13.29.4 Registerkarten und Gruppen718
13.29.5 Kontextabhängige Registerkarten719
13.29.6 Einfache Beschriftungen720
13.29.7 Schaltflächen720
Schaltflächen zusammenfassen722
13.29.8 Auswahllisten722
13.29.9 Optionsauswahl725
13.29.10 Texteingaben725
13.29.11 Screentips725
13.29.12 Symbolleiste für den Schnellzugriff726
13.29.13 Das RibbonWindow727
13.29.14 Menüs728
13.29.15 Anwendungsmenü730
13.29.16 Alternativen733
13.30 Chart733
13.31 WindowsFormsHost734
14 Wichtige WPF-Techniken738
14.1 Eigenschaften738
14.1.1 Abhängige Eigenschaften (Dependency Properties)738
14.1.2 Angehängte Eigenschaften (Attached Properties)740
14.2 Einsatz von Ressourcen740
14.2.1 Was sind eigentlich Ressourcen?740
14.2.2 Wo können Ressourcen gespeichert werden?740
14.2.3 Wie definiere ich eine Ressource?742
14.2.4 Statische und dynamische Ressourcen743
14.2.5 Wie werden Ressourcen adressiert?744
14.2.6 System-Ressourcen einbinden745
14.3 Das WPF-Ereignis-Modell745
14.3.1 Einführung745
14.3.2 Routed Events746
14.3.3 Direkte Events748
14.4 Verwendung von Commands749
14.4.1 Einführung zu Commands749
14.4.2 Verwendung vordefinierter Commands749
14.4.3 Das Ziel des Commands751
14.4.4 Welche vordefinierten Commands stehen zur Verfügung?752
14.4.5 Commands an Ereignismethoden binden753
14.4.6 Wie kann ich ein Command per Code auslösen?754
14.4.7 Command-Ausführung verhindern755
14.5 Das WPF-Style-System755
14.5.1 Übersicht755
14.5.2 Benannte Styles756
14.5.3 Typ-Styles757
14.5.4 Styles anpassen und vererben758
Styles anpassen (überschreiben)759
Style ersetzen759
Styles vererben760
Styleänderung per Code760
14.6 Verwenden von Triggern761
14.6.1 Eigenschaften-Trigger (Property Triggers)761
14.6.2 Ereignis-Trigger763
14.6.3 Daten-Trigger764
14.7 Einsatz von Templates765
14.7.1 Neues Template erstellen765
14.7.2 Template abrufen und verändern769
14.8 Transformationen, Animationen, StoryBoards772
14.8.1 Transformationen772
Drehen mit RotateTransform773
Skalieren mit ScaleTransform774
Verformen mit SkewTransform774
Verschieben mit TranslateTransform775
Und alles zusammen mit TransformGroup775
Hilfe durch den WPF-Editor777
14.8.2 Animationen mit dem StoryBoard realisieren778
Animation per C#-Code realisieren779
Animation per Code steuern779
Mehrere Animationen zusammenfassen782
14.9 Praxisbeispiel782
14.9.1 Arbeiten mit Microsoft Expression Blend782
Eine Animation realisieren783
Der XAML-Code784
Test785
Bemerkung785
15 WPF-Datenbindung788
15.1 Grundprinzip788
15.1.1 Bindungsarten789
15.1.2 Wann eigentlich wird die Quelle aktualisiert?790
15.1.3 Geht es auch etwas langsamer?791
15.1.4 Bindung zur Laufzeit realisieren792
15.2 Binden an Objekte794
15.2.1 Objekte im XAML-Code instanziieren794
15.2.2 Verwenden der Instanz im C#-Quellcode796
15.2.3 Anforderungen an die Quell-Klasse796
15.2.4 Instanziieren von Objekten per C#-Code798
15.3 Binden von Collections799
15.3.1 Anforderung an die Collection799
15.3.2 Einfache Anzeige800
15.3.3 Navigieren zwischen den Objekten801
15.3.4 Einfache Anzeige in einer ListBox803
Verwendung von DisplayMemberPath803
15.3.5 DataTemplates zur Anzeigeformatierung804
15.3.6 Mehr zu List- und ComboBox805
SelectedIndex805
SelectedItem/SelectedItems805
SelectedValuePath und SelectedValue806
15.3.7 Verwendung der ListView807
Einfache Bindung807
Sortieren der Einträge808
15.4 Noch einmal zurück zu den Details809
15.4.1 Navigieren in den Daten809
15.4.2 Sortieren811
15.4.3 Filtern811
15.4.4 Live Shaping812
15.5 Anzeige von Datenbankinhalten813
15.5.1 Datenmodell per LINQ to SQL-Designer erzeugen814
15.5.2 Die Programm-Oberfläche815
15.5.3 Der Zugriff auf die Daten816
15.6 Drag & Drop-Datenbindung817
15.6.1 Vorgehensweise817
15.6.2 Weitere Möglichkeiten820
15.7 Formatieren von Werten821
15.7.1 IValueConverter822
15.7.2 BindingBase.StringFormat-Eigenschaft824
15.8 Das DataGrid als Universalwerkzeug826
15.8.1 Grundlagen der Anzeige826
15.8.2 UI-Virtualisierung827
15.8.3 Spalten selbst definieren827
15.8.4 Zusatzinformationen in den Zeilen anzeigen829
15.8.5 Vom Betrachten zum Editieren830
15.9 Praxisbeispiele831
15.9.1 Collections in Hintergrundthreads füllen831
Oberfläche831
Das Problem831
Lösung (bis .NET 4.0)833
Test833
Lösung (ab .NET 4.5)833
Test834
15.9.2 Drag & Drop-Bindung bei 1:n-Beziehungen834
Oberfläche834
Quellcode (XAML)836
Quellcode (C#)837
Test838
16 Druckausgabe mit WPF840
16.1 Grundlagen840
16.1.1 XPS-Dokumente840
16.1.2 System.Printing841
16.1.3 System.Windows.Xps842
16.2 Einfache Druckausgaben mit dem PrintDialog842
16.3 Mehrseitige Druckvorschau-Funktion845
16.3.1 Fix-Dokumente845
Einsatzbeispiel845
Die Klasse FixedPrintManager849
16.3.2 Flow-Dokumente851
Einführungsbeispiel851
Die Klasse FlowPrintManager852
16.4 Druckerinfos, -auswahl, -konfiguration854
16.4.1 Die installierten Drucker bestimmen855
16.4.2 Den Standarddrucker bestimmen856
16.4.3 Mehr über einzelne Drucker erfahren856
16.4.4 Spezifische Druckeinstellungen vornehmen858
16.4.5 Direkte Druckausgabe860
17 Erste Schritte in WinRT864
17.1 Grundkonzepte und Begriffe864
17.1.1 Windows Runtime (WinRT)864
17.1.2 Windows Store Apps865
17.1.3 Fast and Fluid866
17.1.4 Process Sandboxing und Contracts867
17.1.5 .NET WinRT-Profil869
17.1.6 Language Projection869
17.1.7 Vollbildmodus871
17.1.8 Windows Store871
17.1.9 Zielplattformen872
17.2 Entwurfsumgebung873
17.2.1 Betriebssystem873
17.2.2 Windows-Simulator874
17.2.3 Remote-Debugging876
17.3 Ein (kleines) Einstiegsbeispiel877
17.3.1 Aufgabenstellung877
17.3.2 Quellcode877
17.3.3 Oberflächenentwurf880
17.3.4 Installation und Test882
17.3.5 Verbesserungen883
Persistenz884
Touchscreen885
17.3.6 Fazit886
17.4 Weitere Details zu WinRT888
17.4.1 Wo ist WinRT einzuordnen?888
17.4.2 Die WinRT-API889
Benutzerschnittstelle890
Daten & Kommunikation890
Geräte und Medien891
Anwendungsdienste891
17.4.3 Wichtige WinRT-Namespaces891
17.4.4 Der Unterbau892
Die Schnittstellen892
Language Projection893
Assemblies für WinRT894
17.5 Gedanken zum Thema "WinRT & Tablets"895
17.5.1 Windows 8-Oberfläche versus Desktop895
17.5.2 Tablets und Touchscreens895
17.6 Praxisbeispiel897
17.6.1 WinRT in Desktop-Applikationen nutzen897
Oberfläche897
Quellcode898
Test899
Bemerkung899
18 WinRT-Oberflächen entwerfen900
18.1 Grundkonzepte900
18.1.1 XAML (oder HTML 5) für die Oberfläche901
18.1.2 Die Page, der Frame und das Window902
18.1.3 Das Befehlsdesign903
App-Leisten904
Settingsbereich905
18.1.4 Die Navigationsdesigns905
18.1.5 Achtung: Fingereingabe!906
18.1.6 Verwendung von Schriftarten907
18.2 Projekttypen und Seitentemplates907
18.2.1 Leere App907
18.2.2 Geteilte App (Split App)909
18.2.3 Raster-App (Grid App)911
18.2.4 Leere Seite (Blank Page)912
18.2.5 Standardseite (Basic Page)913
18.2.6 Ein eigenes Grundlayout erstellen915
18.3 Seitenauswahl und -navigation916
18.3.1 Die Startseite festlegen916
18.3.2 Navigation und Parameterübergabe916
18.3.3 Den Seitenstatus erhalten917
18.4 Die vier App-Ansichten918
18.4.1 Vollbild quer und hochkant918
18.4.2 Angedockt und Füllmodus919
18.4.3 Reagieren auf die Änderung919
SizeChanged auswerten920
VisualStateManager921
18.4.4 Angedockten Modus aktiv beenden923
18.5 Skalieren von Apps923
18.6 Praxisbeispiele925
18.6.1 Seitennavigation und Parameterübergabe925
Oberfläche BasicPage1925
Quellcode BasicPage1926
Oberfläche BasicPage2926
Quellcode BasicPage2927
Test927
Bemerkung927
18.6.2 Auf Ansichtsänderungen reagieren927
Oberfläche & Quellcode MainPage927
Oberfläche & Quellcode BlankPage1928
Oberfläche der beiden Frame-Seiten929
Oberfläche & Quellcode BasicPage2930
18.7 Tipps & Tricks931
18.7.1 Symbole für WinRT-Oberflächen finden931
18.7.2 Wie werde ich das Grufti-Layout schnell los?932
19 Die wichtigsten Controls934
19.1 Einfache WinRT-Controls934
19.1.1 TextBlock, RichTextBlock934
19.1.2 Button, HyperlinkButton, RepeatButton937
19.1.3 CheckBox, RadioButton, ToggleButton, ToggleSwitch939
19.1.4 TextBox, PasswordBox, RichEditBox940
19.1.5 Image944
19.1.6 ScrollBar, Slider, ProgressBar, ProgressRing946
19.1.7 Border, Ellipse, Rectangle947
19.2 Layout-Controls948
19.2.1 Canvas948
19.2.2 StackPanel949
19.2.3 ScrollViewer949
19.2.4 Grid950
19.2.5 VariableSizedWrapGrid951
19.3 Listendarstellungen952
19.3.1 ComboBox, ListBox952
19.3.2 ListView956
19.3.3 GridView957
19.3.4 FlipView960
19.4 Sonstige Controls962
19.4.1 CaptureElement962
19.4.2 MediaElement963
19.4.3 Frame965
19.4.4 WebView965
19.4.5 ToolTip966
19.5 Praxisbeispiele968
19.5.1 Einen StringFormat-Konverter implementieren968
Quellcode Klasse StringFormatConverter968
Verwendung des Konverters969
Test970
19.5.2 Besonderheiten der TextBox kennen lernen970
Virtuelle Tastatur970
Tasteneingaben validieren/filtern972
19.5.3 Daten in der GridView gruppieren973
Oberfläche973
Quelltext975
Test975
Bemerkung976
19.5.4 Das SemanticZoom-Control verwenden978
Oberflächen979
Quellcode981
Test981
19.5.5 Die CollectionViewSource verwenden982
Oberfläche983
Quelltext984
Test985
19.5.6 Zusammenspiel ListBox/AppBar986
Oberfläche986
Quelltext987
Test989
19.5.7 Musikwiedergabe im Hintergrund realisieren989
Oberfläche989
Quelltext991
Test993
Bemerkung993
20 Apps im Detail994
20.1 Ein Windows Store App-Projekt im Detail994
20.1.1 Contracts und Extensions995
20.1.2 AssemblyInfo.cs996
20.1.3 Verweise997
20.1.4 App.xaml und App.xaml.cs998
20.1.5 Package.appxmanifest999
Anwendungsbenutzeroberfläche999
Funktionen1000
Deklarationen1002
Verpacken1003
20.1.6 Application1_TemporaryKey.pfx1003
20.1.7 MainPage.xaml & MainPage.xaml.cs1003
20.1.8 Datentyp-Konverter/Hilfsklassen1004
BooleanToVisibilityConverter.cs1004
BooleanNegationConverter.cs1004
RichTextColumns.cs1005
SuspensionManager.cs1005
LayoutAwarePage.cs1006
20.1.9 StandardStyles.xaml1006
20.1.10 Assets/Symbole1007
20.1.11 Nach dem Kompilieren1008
20.2 Der Lebenszyklus einer WinRT-App1008
20.2.1 Möglichkeiten der Aktivierung von Apps1010
20.2.2 Der Splash Screen1012
20.2.3 Suspending1012
20.2.4 Resuming1013
20.2.5 Beenden von Apps1014
20.2.6 Die Ausnahmen von der Regel1015
20.2.7 Debuggen1015
Verwendung einer Protokolldatei1015
Debuggen mit DebugView1017
Steuern der Programmzustände über Visual Studio1017
Debuggen von Contract-aktivierten Apps1018
20.3 Daten speichern und laden1019
20.3.1 Grundsätzliche Überlegungen1019
20.3.2 Worauf und wie kann ich zugreifen?1019
20.3.3 Das AppData-Verzeichnis1019
LocalFolder1020
RoamingFolder1021
TemporaryFolder1021
20.3.4 Das Anwendungs-Installationsverzeichnis1022
20.3.5 Das Downloads-Verzeichnis1023
20.3.6 Sonstige Verzeichnisse1024
20.3.7 Anwendungsdaten lokal sichern und laden1024
20.3.8 Daten in der Cloud ablegen/laden (Roaming)1026
20.3.9 Aufräumen1029
20.3.10 Sensible Informationen speichern1029
20.4 Praxisbeispiele1031
20.4.1 Unterstützung für den Search-Contract bieten1031
Oberfläche1032
Quelltext (App.xaml.cs)1033
Quelltext (SearchPage.xaml.cs)1036
Quelltext (DetailPage.xaml.cs)1036
Test1037
Erweiterungen1038
20.4.2 Die Auto-Play-Funktion unterstützen1038
Anpassen Package.appxmanifest1038
Quelltext1040
Oberfläche1041
Test1041
20.4.3 Einen zusätzlichen Splash Screen einsetzen1042
Oberfläche (ErsatzSplashscreen.xaml)1042
Quellcode (App.xaml.cs)1043
Quellcode (ErsatzSplashScreen.xaml.cs)1043
Test1044
20.4.4 Eine Dateiverknüpfung erstellen1044
Oberfläche1044
Quelltext (App.xaml.cs)1045
Quelltext (BasicPage1.xaml.cs)1046
Test1046
Ergänzungen1048
21 WinRT-Techniken1050
21.1 Arbeiten mit Dateien/Verzeichnissen1050
21.1.1 Verzeichnisinformationen auflisten1050
21.1.2 Unterverzeichnisse auflisten1053
21.1.3 Verzeichnisse erstellen/löschen1054
21.1.4 Dateien auflisten1056
21.1.5 Dateien erstellen/schreiben/lesen1058
Datei erstellen1058
Schreibzugriff mit FileIO1059
Schreibzugriff mit StreamWriter1060
Lesezugriff mit FileIO1061
Lesezugriff mit StreamReader1061
21.1.6 Dateien kopieren/umbenennen/löschen1062
21.1.7 Verwenden der Dateipicker1063
FileOpenPicker1064
FileSavePicker1067
FolderPicker1068
21.1.8 StorageFile-/StorageFolder-Objekte speichern1070
21.1.9 Verwenden der Most Recently Used-Liste1072
21.2 Datenaustausch zwischen Apps/Programmen1073
21.2.1 Zwischenablage1074
Texte kopieren und einfügen1075
Bilder kopieren und einfügen1076
Dateien kopieren/verschieben und abrufen1077
Zwischenablage überwachen1079
21.2.2 Teilen von Inhalten1081
Funktion "Teilen" programmgesteuert aufrufen1083
Sie möchten temporär keine Daten teilen1084
21.2.3 Eine App als Freigabeziel verwenden1084
21.2.4 Zugriff auf die Kontaktliste1085
21.3 Spezielle Oberflächenelemente1087
21.3.1 MessageDialog1087
Dialog mit Auswahl1087
Alternativen beim Auswerten der Tasten1089
Ergänzungen1090
21.3.2 Popup-Benachrichtigungen1090
Wann sollten Sie Popup-Benachrichtigungen einsetzen?1091
Was können Sie alles parametrieren?1093
Und wie funktioniert das alles?1093
Unser ToastNotification-"Bäckerei"1094
Prüfen auf Funktionsfähigkeit1098
21.3.3 PopUp/Flyouts1098
21.3.4 Das PopupMenu einsetzen1102
21.3.5 Eine AppBar verwenden1104
21.4 Datenbanken und Windows 8-Apps1109
21.4.1 Der Retter in der Not: SQLite!1109
21.4.2 Verwendung/Kurzüberblick1109
Was eigentlich ist SQLite?1109
Vorteile1110
Nachteile1110
21.4.3 Installation1111
21.4.4 Wie kommen wir zu einer neuen Datenbank?1113
21.4.5 Wie werden die Daten manipuliert?1117
21.5 Vertrieb der App1119
21.5.1 Verpacken der App1119
21.5.2 Windows App Certification Kit1121
21.5.3 App-Installation per Skript1123
21.6 Ein Blick auf die App-Schwachstellen1124
21.6.1 Quellcodes im Installationsverzeichnis1124
21.6.2 Zugriff auf den App-Datenordner1126
21.7 Praxisbeispiele1126
21.7.1 Ein Verzeichnis auf Änderungen überwachen1126
Oberfläche1127
Quellcode1127
Test1128
21.7.2 Eine App als Freigabeziel verwenden1129
Oberfläche1129
Registrieren der App als Freigabeziel1130
Quellcode (App.xaml.cs)1131
Quellcode (InsertPage.xaml.cs)1131
Test1133
21.7.3 ToastNotifications einfach erzeugen1134
Quellcode1135
Test1139
Index1150
Ergänzungsband1170
Zweites Vorwort1194
22 XML in Theorie und Praxis1198
22.1 XML – etwas Theorie1198
22.1.1 Übersicht1198
22.1.2 Der XML-Grundaufbau1201
22.1.3 Wohlgeformte Dokumente1202
22.1.4 Processing Instructions (PI)1205
22.1.5 Elemente und Attribute1205
22.1.6 Verwendbare Zeichensätze1207
22.2 XSD-Schemas1209
22.2.1 XSD-Schemas und ADO.NET1209
22.2.2 XML-Schemas in Visual Studio analysieren1211
Der XML-Schema-Explorer1212
Ausgangsansicht des XML-Schema-Designers1212
Inhaltsmodellansicht1213
XML-Editor1214
22.2.3 XML-Datei mit XSD-Schema erzeugen1214
22.2.4 XSD-Schema aus einer XML-Datei erzeugen1215
22.3 Verwendung des DOM unter .NET1216
22.3.1 Übersicht1216
22.3.2 DOM-Integration in C#1217
22.3.3 Laden von Dokumenten1217
22.3.4 Erzeugen von XML-Dokumenten1218
22.3.5 Auslesen von XML-Dateien1220
22.3.6 Direktzugriff auf einzelne Elemente1222
22.3.7 Einfügen von Informationen1222
22.3.8 Suchen in den Baumzweigen1225
22.4 XML-Verarbeitung mit LINQ to XML1228
22.4.1 Die LINQ to XML-API1228
22.4.2 Neue XML-Dokumente erzeugen1230
22.4.3 Laden und Sichern von XML-Dokumenten1232
22.4.4 Navigieren in XML-Daten1233
22.4.5 Auswählen und Filtern1235
22.4.6 Manipulieren der XML-Daten1235
Editieren der Daten1236
Hinzufügen von Daten1236
Löschen1237
22.4.7 XML-Dokumente transformieren1237
22.5 Weitere Möglichkeiten der XML-Verarbeitung1240
22.5.1 Die relationale Sicht mit XmlDataDocument1240
Laden von XML-Daten1240
Verwendung des DataSets1241
22.5.2 XML-Daten aus Objektstrukturen erzeugen1243
22.5.3 Schnelles Suchen in XML-Daten mit XPathNavigator1246
22.5.4 Schnelles Auslesen von XML-Daten mit XmlReader1249
22.5.5 Erzeugen von XML-Daten mit XmlWriter1251
22.5.6 XML transformieren mit XSLT1253
22.6 Praxisbeispiele1255
22.6.1 Mit dem DOM in XML-Dokumenten navigieren1255
Oberfläche1255
Quelltext1256
Test1257
Bemerkungen1258
22.6.2 XML-Daten in eine TreeView einlesen1258
Oberfläche1258
Quelltext1258
Test1260
Ergänzung1260
23 Einführung in ADO.NET1262
23.1 Eine kleine Übersicht1262
23.1.1 Die ADO.NET-Klassenhierarchie1262
23.1.2 Die Klassen der Datenprovider1263
.NET-Datenprovider1264
Weitere Datenprovider1264
Anzeige der installierten Datenprovider1265
23.1.3 Das Zusammenspiel der ADO.NET-Klassen1266
23.2 Das Connection-Objekt1267
23.2.1 Allgemeiner Aufbau1267
23.2.2 OleDbConnection1267
Parameter für OleDb-Zugriff1267
OleDb-Provider für Access Datenbank1268
23.2.3 Schließen einer Verbindung1269
23.2.4 Eigenschaften des Connection-Objekts1269
ConnectionString-Eigenschaft1269
Database- und DataSource-Eigenschaft1270
Provider-Eigenschaft1270
ServerVersion-Eigenschaft1270
ConnectionTimeout-Eigenschaft1271
State-Eigenschaft1271
23.2.5 Methoden des Connection-Objekts1271
Open- und Close-Methode1271
ChangeDatabase-Methode1272
CreateCommand-Methode1272
23.2.6 Der ConnectionStringBuilder1272
23.3 Das Command-Objekt1272
23.3.1 Erzeugen und Anwenden eines Command-Objekts1273
23.3.2 Erzeugen mittels CreateCommand-Methode1273
23.3.3 Eigenschaften des Command-Objekts1274
Connection- und CommandText-Eigenschaft1274
CommandTimeout-Eigenschaft1274
CommandType-Eigenschaft1275
23.3.4 Methoden des Command-Objekts1276
ExecuteNonQuery-Methode1276
ExecuteReader-Methode1276
ExecuteScalar-Methode1276
23.3.5 Freigabe von Connection- und Command-Objekten1277
23.4 Parameter-Objekte1278
23.4.1 Erzeugen und Anwenden eines Parameter-Objekts1278
23.4.2 Eigenschaften des Parameter-Objekts1279
ParameterName- und Value-Eigenschaft1279
DbType, OleDbType und SqlDbType-Eigenschaft1279
Direction-Eigenschaft1279
23.5 Das CommandBuilder-Objekt1280
23.5.1 Erzeugen1280
23.5.2 Anwenden1280
23.6 Das DataReader-Objekt1281
23.6.1 DataReader erzeugen1281
23.6.2 Daten lesen1282
23.6.3 Eigenschaften des DataReaders1283
Item-Eigenschaft1283
FieldCount-Eigenschaft1283
IsClosed-Eigenschaft1283
23.6.4 Methoden des DataReaders1283
Read-Methode1283
GetValue- und GetValues-Methode1283
GetOrdinal- und ähnliche Methoden1283
Bemerkungen1283
23.7 Das DataAdapter-Objekt1284
23.7.1 DataAdapter erzeugen1284
Konstruktor mit SELECT-String und Connection-Objekt1284
Konstruktor mit SelectCommand-Objekt1285
23.7.2 Command-Eigenschaften1285
23.7.3 Fill-Methode1286
Begrenzen der Datenmenge1286
23.7.4 Update-Methode1287
23.8 Praxisbeispiele1288
23.8.1 Wichtige ADO.NET-Objekte im Einsatz1288
Oberfläche1288
Quellcode1288
Test1289
Bemerkungen1289
23.8.2 Eine Aktionsabfrage ausführen1289
Oberfläche1290
Quellcode1290
Test1291
Bemerkungen1291
23.8.3 Eine Auswahlabfrage aufrufen1292
Oberfläche1292
Quellcode1292
Test1294
23.8.4 Die Datenbank aktualisieren1294
Oberfläche1295
Quellcode (Command-Objekte selbst programmiert)1295
Test1296
Bemerkungen1297
24 Das DataSet1298
24.1 Grundlegende Features des DataSets1298
24.1.1 Die Objekthierarchie1299
24.1.2 Die wichtigsten Klassen1299
24.1.3 Erzeugen eines DataSets1300
Copy-Methode1300
Clone-Methode1301
GetChanges-/HasChanges-Methode1301
24.2 Das DataTable-Objekt1301
24.2.1 DataTable erzeugen1302
24.2.2 Spalten hinzufügen1302
24.2.3 Zeilen zur DataTable hinzufügen1303
NewRow-Methode1303
ImportRow-Methode1303
24.2.4 Auf den Inhalt einer DataTable zugreifen1304
Columns- und Rows-Eigenschaften1304
TableName- und ColumnName-Eigenschaften1304
Find-Methode1305
Zeilen löschen1305
24.3 Die DataView1306
24.3.1 Erzeugen einer DataView1306
24.3.2 Sortieren und Filtern von Datensätzen1306
24.3.3 Suchen von Datensätzen1307
24.4 Typisierte DataSets1307
24.4.1 Ein typisiertes DataSet erzeugen1308
24.4.2 Das Konzept der Datenquellen1309
24.4.3 Typisierte DataSets und TableAdapter1310
Warum sollte man ein typisiertes DataSet einsetzen?1310
Der TableAdapter1311
24.5 Die Qual der Wahl1311
24.5.1 DataReader – der schnelle Lesezugriff1312
24.5.2 DataSet – die Datenbank im Hauptspeicher1312
Typisiertes versus untypisiertes DataSet1312
24.5.3 Objektrelationales Mapping – die Zukunft?1313
LINQ to SQL/LINQ to Entities1313
24.6 Praxisbeispiele1314
24.6.1 In der DataView sortieren und filtern1314
Oberfläche1314
Quellcode1314
Test1315
Bemerkungen1316
24.6.2 Suche nach Datensätzen1316
Oberfläche1316
Quellcode1316
Test1317
24.6.3 Ein DataSet in einen XML-String serialisieren1317
Konvertierungsmethoden1318
Testoberfläche Form11319
Quellcode Form11319
Erzeugen eines untypisierten DataSets als Testobjekt1320
Test1321
24.6.4 Untypisiertes in ein typisiertes DataSet konvertieren1322
Konvertierungscode1323
Normales DataSet erzeugen1323
Typisiertes DataSet erzeugen1324
Oberfläche1325
Test1326
Bemerkungen1327
24.6.5 Eine LINQ to SQL-Abfrage ausführen1327
Datenmodell per LINQ to SQL-Designer erzeugen1327
Datenquelle hinzufügen1328
Oberfläche1329
Test1330
Bemerkung1330
25 OOP-Spezial1332
25.1 Eine kleine Einführung in die UML1332
25.1.1 Use Case-Diagramm1332
25.1.2 Use Case-Dokumentation1334
USE CASE: Inbetriebnahme des Autos1334
USE CASE: Versuchter Diebstahl des Autos1335
25.1.3 Objekte identifizieren1335
25.1.4 Statisches Modell1336
25.1.5 Beziehungen zwischen den Klassen1337
25.1.6 Dynamisches Modell1337
Relevante Zustände identifizieren1337
Zustandsüberführungs­diagramm1338
25.1.7 Implementierung1338
Klasse CSchlüssel1339
Klasse CSchloss1340
Klasse CAuto1340
25.1.8 Test-Client1342
Test1344
Bemerkungen1345
25.2 Der Klassen-Designer1345
25.2.1 Ein neues Klassendiagramm erzeugen1346
25.2.2 Werkzeugkasten1347
25.2.3 Enumeration1348
25.2.4 Klasse1350
Klassendetails-Fenster1351
25.2.5 Struktur1352
25.2.6 Abstrakte Klasse1352
25.2.7 Schnittstelle1354
25.2.8 Delegate1356
25.2.9 Zuordnung1358
25.2.10 Vererbung1359
25.2.11 Diagramme anpassen1359
25.2.12 Wann lohnt sich der Klassen-Designer?1360
25.3 Praxisbeispiele1360
25.3.1 Implementierung einer Finite State Machine1360
Zustandsüberführungsmatrix1360
CAuto1364
Clientcode1365
Test1366
25.3.2 Modellierung des Bestellsystems einer Firma1366
Klassendiagramm1366
Klasse CBestellung1367
Klasse CPerson1369
Klasse CKunde1370
Klasse CFirma1373
Klasse Form11374
Abschlusstest1378
Bemerkungen1378
26 Das Microsoft Event Pattern1380
26.1 Einführung in Design Pattern1380
26.2 Aufbau und Bedeutung des Observer Pattern1381
26.2.1 Subjekt und Observer1381
26.2.2 Sequenzdiagramme1383
26.2.3 Die Registration-Sequenz1383
26.2.4 Die Notification-Sequenz1384
26.2.5 Die Unregistration-Sequenz1384
26.2.6 Bedeutung der Sequenzen für das Geschäftsmodell1385
26.2.7 Die Rolle des Containers1385
26.3 Implementieren mit Interfaces und Callbacks1386
26.3.1 Übersicht und Klassendiagramm1386
26.3.2 Die Schnittstellen IObserver und IObservable1388
26.3.3 Die Abstrakte Klasse Subject1388
26.3.4 Observer11389
26.3.5 Observer21390
26.3.6 Model1391
26.3.7 Form11392
26.3.8 Ein zweites Klassendiagramm1393
26.3.9 Testen1394
26.4 Implementierung mit Delegates und Events1395
26.4.1 Multicast-Events1396
26.4.2 IObserver, IObservable und Subject1396
26.4.3 Observer1 und Observer21397
26.4.4 Model1397
26.4.5 Form11398
26.4.6 Test und Vergleich1398
26.4.7 Klassendiagramm1399
26.5 Implementierung des Microsoft Event Pattern1400
26.5.1 Namensgebung für Ereignisse1400
26.5.2 Namensgebung und Signatur der Delegates1400
26.5.3 Hinzufügen einer das Ereignis auslösenden Methode1401
Neue Klasse NumberChangedEventArgs1401
26.5.4 Model1402
26.5.5 Observer11403
26.5.6 Form11404
26.6 Test und Vergleich1404
26.7 Klassendiagramm1404
26.8 Implementierung eines Event Pattern1405
26.9 Praxisbeispiel1407
26.9.1 Objekte beobachten sich gegenseitig1407
Oberfläche1407
NumberChangedEventArgs und MaximumChangedEventArgs1407
Model1408
Observer11410
Observer21411
Form11412
Test und Vergleich1414
Klassenzusammenstellung1415
Klassendiagramm1416
27 Verteilen von Anwendungen1418
27.1 ClickOnce-Deployment1419
27.1.1 Übersicht/Einschränkungen1419
27.1.2 Die Vorgehensweise1420
27.1.3 Ort der Veröffentlichung1420
27.1.4 Anwendungsdateien1421
27.1.5 Erforderliche Komponenten1421
27.1.6 Aktualisierungen1422
27.1.7 Veröffentlichungsoptionen1423
27.1.8 Veröffentlichen1424
27.1.9 Verzeichnisstruktur1424
27.1.10 Der Webpublishing-Assistent1426
27.1.11 Neue Versionen erstellen1427
27.2 InstallShield1427
27.2.1 Installation1427
27.2.2 Aktivieren1428
27.2.3 Ein neues Setup-Projekt1428
Anwendungseinstellungen1429
Installationsbedingungen1430
Optionales Setup1431
Anwendungsdateien1431
Startmenü und Verknüpfungen1432
Registrierungseinträge1432
Setup-Dialoge/Erscheinungsbild1433
Installationsdateien1435
27.2.4 Finaler Test1436
28 Weitere Techniken1438
28.1 Zugriff auf die Zwischenablage1438
28.1.1 Das Clipboard-Objekt1438
Kopieren1439
Einfügen1439
28.1.2 Zwischenablage-Funktionen für Textboxen1440
28.2 Arbeiten mit der Registry1440
28.2.1 Allgemeines1441
28.2.2 Registry-Unterstützung in .NET1443
28.3 .NET-Reflection1444
28.3.1 Übersicht1444
28.3.2 Assembly laden1444
28.3.3 Mittels GetType und Type Informationen sammeln1445
28.3.4 Dynamisches Laden von Assemblies1447
Beispiel1447
28.4 Das SerialPort-Control1450
28.4.1 Übersicht1450
Wichtige Eigenschaften1450
Wichtige Methoden1451
Wichtige Ereignisse1451
28.4.2 Einführungsbeispiele1451
SerialPortTalker1451
SerialPortListener1452
Test1453
28.4.3 Thread-Probleme bei Windows Forms-Anwendungen1454
28.4.4 Ein einfaches Terminalprogramm1457
Bedienoberfläche1458
Quellcode1458
Test1461
Bemerkungen zur Verarbeitung von Messdaten1461
28.5 Praxisbeispiele1462
28.5.1 Zugriff auf die Registry1462
Oberfläche1462
Quelltext1462
Test1464
28.5.2 Dateiverknüpfungen erzeugen1464
28.5.3 Betrachter für Manifestressourcen1466
Oberfläche1466
Quellcode Form11466
Test1468
28.5.4 Ressourcen mit Reflection auslesen1469
29 Konsolenanwendungen1472
29.1 Grundaufbau/Konzepte1472
29.1.1 Unser Hauptprogramm – Program.cs1473
static void Main()1474
29.1.2 Rückgabe eines Fehlerstatus1474
29.1.3 Parameterübergabe1475
29.1.4 Zugriff auf die Umgebungsvariablen1476
29.2 Die Kommandozentrale: System.Console1477
29.2.1 Eigenschaften1478
29.2.2 Methoden/Ereignisse1478
29.2.3 Textausgaben1479
29.2.4 Farbangaben1480
29.2.5 Tastaturabfragen1481
Modifiers-Eigenschaft und ConsoleModifiers-Enumeration1482
29.2.6 Arbeiten mit Streamdaten1482
29.3 Praxisbeispiel1484
29.3.1 Farbige Konsolenanwendung1484
29.3.2 Weitere Hinweise und Beispiele1486
30 Windows Forms-Anwendungen1490
30.1 Grundaufbau/Konzepte1490
30.1.1 Das Hauptprogramm – Program.cs1491
static void Main()1492
Application.EnableVisualStyles1493
Application.SetCompatibleTextRenderingDefault(false)1493
Application.Run(new Form1())1493
30.1.2 Die Oberflächendefinition – Form1.Designer.cs1495
30.1.3 Die Spielwiese des Programmierers – Form1.cs1496
30.1.4 Die Datei AssemblyInfo.cs1497
30.1.5 Resources.resx/Resources.Designer.cs1498
30.1.6 Settings.settings/Settings.Designer.cs1499
30.1.7 Settings.cs1500
30.2 Ein Blick auf die Application-Klasse1501
30.2.1 Eigenschaften1501
30.2.2 Methoden1502
30.2.3 Ereignisse1504
30.3 Allgemeine Eigenschaften von Komponenten1504
30.3.1 Font1505
30.3.2 Handle1507
30.3.3 Tag1508
30.3.4 Modifiers1508
30.4 Allgemeine Ereignisse von Komponenten1509
30.4.1 Die Eventhandler-Argumente1509
30.4.2 Sender1509
30.4.3 Der Parameter e1511
30.4.4 Mausereignisse1511
Tastaturereignisse1512
30.4.5 KeyPreview1513
30.4.6 Weitere Ereignisse1514
30.4.7 Validätsprüfungen1514
30.4.8 SendKeys1515
30.5 Allgemeine Methoden von Komponenten1516
31 Windows Forms-Formulare1518
31.1 Übersicht1518
31.1.1 Wichtige Eigenschaften des Form-Objekts1519
Controls-Auflistung1520
31.1.2 Wichtige Ereignisse des Form-Objekts1521
31.1.3 Wichtige Methoden des Form-Objekts1522
31.2 Praktische Aufgabenstellungen1523
31.2.1 Fenster anzeigen1523
Nichtmodale Fenster1524
Modale Fenster (Dialoge)1524
31.2.2 Splash Screens beim Anwendungsstart anzeigen1526
31.2.3 Eine Sicherheitsabfrage vor dem Schließen anzeigen1529
31.2.4 Ein Formular durchsichtig machen1529
31.2.5 Die Tabulatorreihenfolge festlegen1530
31.2.6 Ausrichten von Komponenten im Formular1531
Dock1531
Anchor1532
31.2.7 Spezielle Panels für flexible Layouts1533
SplitContainer1534
FlowLayoutPanel1534
TableLayoutPanel1534
31.2.8 Menüs erzeugen1535
MenuStrip1535
ContextMenuStrip1537
Weitere Eigenschaften von Menüeinträgen1538
31.3 MDI-Anwendungen1539
31.3.1 "Falsche" MDI-Fenster bzw. Verwenden von Parent1539
31.3.2 Die echten MDI-Fenster1540
31.3.3 Die Kindfenster1541
31.3.4 Automatisches Anordnen der Kindfenster1542
31.3.5 Zugriff auf die geöffneten MDI-Kindfenster1543
31.3.6 Zugriff auf das aktive MDI-Kindfenster1544
31.3.7 Mischen von Kindfenstermenü/MDIContainer-Menü1544
AllowMerge1544
MergeAction und MergeIndex1545
31.4 Praxisbeispiele1545
31.4.1 Informationsaustausch zwischen Formularen1545
Überblick1545
Bedienoberfläche Form1 (Hauptformular)1546
Bedienoberfläche Form2 ... Form5 (unterge­ordnete Formulare)1546
Allgemeiner Code für Form11547
Variante 1: Übergabe der Formular-Referenz im Konstruktor1548
Variante 2: Übergabe der Formular-Referenz als Eigenschaft1549
Variante 3: Übergabe der Formular-Referenz als globale Variable1550
Variante 4: Übergabe der Formular-Referenz als Ownership1551
Bemerkungen1552
31.4.2 Ereigniskette beim Laden/Entladen eines Formulars1552
Bedienoberfläche (Form1 und Form2)1553
Änderung des Startformulars1553
Quellcode von Form11554
Quellcode von Form21556
Test1556
Bemerkungen1557
32 Windows Forms-Komponenten1558
32.1 Allgemeine Hinweise1558
32.1.1 Hinzufügen von Komponenten1558
32.1.2 Komponenten zur Laufzeit per Code erzeugen1559
32.2 Allgemeine Steuerelemente1561
32.2.1 Label1561
32.2.2 LinkLabel1562
Wichtige Eigenschaften1562
Hyperlink einfügen1562
32.2.3 Button1563
32.2.4 TextBox1564
Mehrzeilige Textboxen1564
Markieren von Text1565
PasswordChar1566
Automatisches Vervollständigen1566
32.2.5 MaskedTextBox1567
32.2.6 CheckBox1568
32.2.7 RadioButton1570
32.2.8 ListBox1570
32.2.9 CheckedListBox1572
32.2.10 ComboBox1572
32.2.11 PictureBox1573
32.2.12 DateTimePicker1574
32.2.13 MonthCalendar1574
32.2.14 HScrollBar, VScrollBar1575
32.2.15 TrackBar1576
32.2.16 NumericUpDown1576
32.2.17 DomainUpDown1577
32.2.18 ProgressBar1577
32.2.19 RichTextBox1578
32.2.20 ListView1579
ListViewItem1579
ImageList1580
Übersichten zur ListView1580
32.2.21 TreeView1585
Knoten zur Laufzeit erzeugen1586
Auswerten des aktiven Knotens1587
Wichtige Eigenschaften von TreeView1588
Wichtige Methoden von TreeView1589
Wichtige Ereignisse von TreeView1589
Wichtige Eigenschaften von TreeNode1589
Wichtige Methoden von TreeNode1590
32.2.22 WebBrowser1590
32.3 Container1591
32.3.1 FlowLayout/TableLayout/SplitContainer1591
32.3.2 Panel1591
Oberflächen gestalten1591
32.3.3 GroupBox1592
32.3.4 TabControl1593
Wichtige Eigenschaften1594
Wichtige Ereignisse1594
32.3.5 ImageList1595
32.4 Menüs & Symbolleisten1596
32.4.1 MenuStrip und ContextMenuStrip1596
32.4.2 ToolStrip1596
32.4.3 StatusStrip1596
32.4.4 ToolStripContainer1597
32.5 Daten1597
32.5.1 DataSet1597
32.5.2 DataGridView/DataGrid1598
32.5.3 BindingNavigator/BindingSource1598
32.5.4 Chart1598
32.6 Komponenten1600
32.6.1 ErrorProvider1600
32.6.2 HelpProvider1600
32.6.3 ToolTip1600
32.6.4 BackgroundWorker1600
32.6.5 Timer1600
32.6.6 SerialPort1601
32.7 Drucken1601
32.7.1 PrintPreviewControl1601
32.7.2 PrintDocument1601
32.8 Dialoge1601
32.8.1 OpenFileDialog/SaveFileDialog/FolderBrowserDialog1601
32.8.2 FontDialog/ColorDialog1602
32.9 WPF-Unterstützung mit dem ElementHost1602
32.10 Praxisbeispiele1602
32.10.1 Mit der CheckBox arbeiten1602
Oberfläche1602
Quellcode1603
Test1603
32.10.2 Steuerelemente per Code selbst erzeugen1604
Oberfläche1604
Quellcode1604
Test1606
Bemerkungen1606
32.10.3 Controls-Auflistung im TreeView anzeigen1606
Oberfläche1607
Quellcode1608
Test1609
32.10.4 WPF-Komponenten mit dem ElementHost anzeigen1610
Oberfläche (WPF-Control)1611
Oberfläche (Windows Forms)1613
33 Grundlagen Grafikausgabe1614
33.1 Übersicht und erste Schritte1614
33.1.1 GDI+ – Ein erster Einblick für Umsteiger1615
Ein zentrales Grafikausgabe-Objekt1615
Die Grafikausgabe ist zustandslos1615
Prinzipieller Ablauf1615
Wichtige Features1616
33.1.2 Namespaces für die Grafikausgabe1616
System.Drawing1616
System.Drawing.Drawing2D1617
System.Drawing.Imaging1617
System.Drawing.Printing1617
System.Drawing.Design1618
System.Drawing.Text1618
33.2 Darstellen von Grafiken1618
33.2.1 Die PictureBox-Komponente1618
33.2.2 Das Image-Objekt1619
33.2.3 Laden von Grafiken zur Laufzeit1620
33.2.4 Sichern von Grafiken1620
Spezielle Einstellungen1621
33.2.5 Grafikeigenschaften ermitteln1621
Breite und Höhe der Grafik1621
Auflösung1621
Grafiktyp1622
Interner Bitmap-Aufbau1622
33.2.6 Erzeugen von Vorschaugrafiken (Thumbnails)1622
33.2.7 Die Methode RotateFlip1623
33.2.8 Skalieren von Grafiken1624
33.3 Das .NET-Koordinatensystem1625
33.3.1 Globale Koordinaten1626
33.3.2 Seitenkoordinaten (globale Transformation)1627
Translation (Verschiebung)1627
Skalierung (Vergrößerung/Verkleinerung)1627
Rotation1628
33.3.3 Gerätekoordinaten (Seitentransformation)1629
33.4 Grundlegende Zeichenfunktionen von GDI+1630
33.4.1 Das zentrale Graphics-Objekt1630
Wie erzeuge ich ein Graphics-Objekt?1631
Die Invalidate-Methode1632
Die Eigenschaft ResizeRedraw1632
33.4.2 Punkte zeichnen/abfragen1633
33.4.3 Linien1634
33.4.4 Kantenglättung mit Antialiasing1635
33.4.5 PolyLine1636
33.4.6 Rechtecke1636
DrawRectangle1636
FillRectangle1637
DrawRectangles/FillRectangles1637
33.4.7 Polygone1638
33.4.8 Splines1639
33.4.9 Bézierkurven1640
33.4.10 Kreise und Ellipsen1641
33.4.11 Tortenstück (Segment)1641
Kuchendiagramme1642
33.4.12 Bogenstück1643
33.4.13 Wo sind die Rechtecke mit den runden Ecken?1644
33.4.14 Textausgabe1645
Texteigenschaften1646
Ausgabe von mehrzeiligem Text1646
Textattribute1647
Ausgabequalität1647
Und wo bleibt eine Methode zum Drehen von Text?1648
33.4.15 Ausgabe von Grafiken1649
Skalieren1650
33.5 Unser Werkzeugkasten1650
33.5.1 Einfache Objekte1650
Point, FPoint1650
Size, FSize1651
Rectangle, FRectangle1651
33.5.2 Vordefinierte Objekte1652
Vordefinierte Pinsel1652
Vordefinierte Stifte1652
Vordefinierte Farben1653
Vordefinierte Icons1653
33.5.3 Farben/Transparenz1654
ARGB-Farben1654
Was ist mit dem höchstwertigen Byte?1654
33.5.4 Stifte (Pen)1655
Einfarbige Stifte1656
Stifte mit Füllung1657
33.5.5 Pinsel (Brush)1658
33.5.6 SolidBrush1659
33.5.7 HatchBrush1659
33.5.8 TextureBrush1660
33.5.9 LinearGradientBrush1661
33.5.10 PathGradientBrush1662
33.5.11 Fonts1663
33.5.12 Path-Objekt1664
Füllen1665
Fillmode1666
33.5.13 Clipping/Region1667
Regions1668
Clipping1670
33.6 Standarddialoge1671
33.6.1 Schriftauswahl1671
33.6.2 Farbauswahl1672
33.7 Praxisbeispiele1674
33.7.1 Ein Graphics-Objekt erzeugen1674
Variante 1: Verwendung des Paint-Events1674
Test1674
Variante 2: Überschreiben der OnPaint-Methode1675
Test1675
Variante 3: Graphics-Objekt mit CreateGraphics erzeugen1675
Test1676
Variante 4: Verwendung des Graphics-Objekts einer PictureBox1676
33.7.2 Zeichenoperationen mit der Maus realisieren1676
Oberfläche1676
Quelltext1677
Test1679
34 Druckausgabe1680
34.1 Einstieg und Übersicht1680
34.1.1 Nichts geht über ein Beispiel1680
34.1.2 Programmiermodell1682
34.1.3 Kurzübersicht der Objekte1683
34.2 Auswerten der Druckereinstellungen1683
34.2.1 Die vorhandenen Drucker1683
34.2.2 Der Standarddrucker1684
34.2.3 Verfügbare Papierformate/Seitenabmessungen1685
34.2.4 Der eigentliche Druckbereich1686
34.2.5 Die Seitenausrichtung ermitteln1687
34.2.6 Ermitteln der Farbfähigkeit1687
34.2.7 Die Druckauflösung abfragen1687
34.2.8 Ist beidseitiger Druck möglich?1688
34.2.9 Einen "Informationsgerätekontext" erzeugen1688
34.2.10 Abfragen von Werten während des Drucks1689
34.3 Festlegen von Druckereinstellungen1690
34.3.1 Einen Drucker auswählen1690
34.3.2 Drucken in Millimetern1690
34.3.3 Festlegen der Seitenränder1691
34.3.4 Druckjobname1692
34.3.5 Anzahl der Kopien1693
34.3.6 Beidseitiger Druck1693
34.3.7 Seitenzahlen festlegen1694
34.3.8 Druckqualität verändern1697
34.3.9 Ausgabemöglichkeiten des Chart-Controls nutzen1698
34.4 Die Druckdialoge verwenden1698
34.4.1 PrintDialog1699
34.4.2 PageSetupDialog1700
Probleme mit den Rändern1701
34.4.3 PrintPreviewDialog1702
34.4.4 Ein eigenes Druckvorschau-Fenster realisieren1703
34.5 Drucken mit OLE-Automation1704
34.5.1 Kurzeinstieg in die OLE-Automation1704
Programmieren der OLE-Automation1705
34.5.2 Drucken mit Microsoft Word1706
34.6 Praxisbeispiele1708
34.6.1 Den Drucker umfassend konfigurieren1708
Oberfläche (Hauptformular Form1)1708
Oberfläche (Druckvorschau Form2)1709
Quelltext (Form1)1710
Quelltext (Form2)1715
Test1716
34.6.2 Diagramme mit dem Chart-Control drucken1718
Oberfläche1718
Quelltext1718
Test1719
34.6.3 Druckausgabe mit Word1720
Oberfläche1720
Quelltext1721
Test1723
Anmerkung ab .NET 4.01724
35 Windows Forms-Datenbindung1726
35.1 Prinzipielle Möglichkeiten1726
35.2 Manuelle Bindung an einfache Datenfelder1727
35.2.1 BindingSource erzeugen1727
35.2.2 Binding-Objekt1728
35.2.3 DataBindings-Collection1728
Bemerkungen1728
35.3 Manuelle Bindung an Listen und Tabellen1728
35.3.1 DataGridView1729
35.3.2 Datenbindung von ComboBox und ListBox1729
35.4 Entwurfszeit-Bindung an typisierte DataSets1729
35.5 Drag & Drop-Datenbindung1731
35.6 Navigations- und Bearbeitungsfunktionen1731
35.6.1 Navigieren zwischen den Datensätzen1731
35.6.2 Hinzufügen und Löschen1731
35.6.3 Aktualisieren und Abbrechen1732
35.6.4 Verwendung des BindingNavigators1732
35.7 Die Anzeigedaten formatieren1733
35.8 Praxisbeispiele1733
35.8.1 Einrichten und Verwenden einer Datenquelle1733
Assistent zum Konfigurieren von Datenquellen1733
Verwenden der Datenquelle1735
Test1736
Abfragemethoden hinzufügen1736
35.8.2 Eine Auswahlabfrage im DataGridView anzeigen1737
Oberfläche1738
Quellcode1738
Test1739
35.8.3 Master-Detailbeziehungen im DataGrid anzeigen1740
Oberfläche1740
Quellcode1740
Test1741
35.8.4 Datenbindung Chart-Control1741
Oberfläche1742
Quellcode1744
Test1744
36 Erweiterte Grafikausgabe1746
36.1 Transformieren mit der Matrix-Klasse1746
36.1.1 Übersicht1746
36.1.2 Translation1747
36.1.3 Skalierung1747
36.1.4 Rotation1748
36.1.5 Scherung1748
36.1.6 Zuweisen der Matrix1749
36.2 Low-Level-Grafikmanipulationen1749
36.2.1 Worauf zeigt Scan0?1750
36.2.2 Anzahl der Spalten bestimmen1751
36.2.3 Anzahl der Zeilen bestimmen1752
36.2.4 Zugriff im Detail (erster Versuch)1752
36.2.5 Zugriff im Detail (zweiter Versuch)1754
Weiter optimieren1755
36.2.6 Invertieren1756
36.2.7 In Graustufen umwandeln1757
36.2.8 Heller/Dunkler1758
36.2.9 Kontrast1760
36.2.10 Gamma-Wert1761
36.2.11 Histogramm spreizen1761
36.2.12 Ein universeller Grafikfilter1764
Beispiel: Eine universelle Filter-Klasse entwickeln1764
Die Klasse GrafikFilter im Einsatz1767
36.3 Fortgeschrittene Techniken1768
36.3.1 Flackerfrei dank Double Buffering1768
Eine Puffer-Bitmap erzeugen1768
Und was ist mit der PictureBox?1769
36.3.2 Animationen1770
Vorbereiten des Ausgabeobjekts1770
Styles bei Controls setzen1771
Die eigentliche Grafikausgabe1771
Bemerkungen1773
36.3.3 Animated GIFs1773
Wie lernen die Bilder das Laufen?1774
36.3.4 Auf einzelne GIF-Frames zugreifen1775
Wiedergabe einzelner Frames1776
Erzeugen eines Bitmap-Strips1776
36.3.5 Transparenz realisieren1777
36.3.6 Eine Grafik maskieren1778
36.3.7 JPEG-Qualität beim Sichern bestimmen1780
36.4 Grundlagen der 3D-Vektorgrafik1781
36.4.1 Datentypen für die Verwaltung1781
36.4.2 Eine universelle 3D-Grafik-Klasse1782
36.4.3 Grundlegende Betrachtungen1783
Drehwinkel1784
Darstellungsmöglichkeiten1784
36.4.4 Translation1786
36.4.5 Streckung/Skalierung1787
36.4.6 Rotation1788
36.4.7 Die eigentlichen Zeichenroutinen1790
Ausgabe einer Linie1790
Ausgabe eines Koordinatensystems1790
36.5 Und doch wieder GDI-Funktionen ...1792
36.5.1 Am Anfang war das Handle ...1792
36.5.2 Gerätekontext (Device Context Types)1795
Formular-DC über Graphics-Objekt erzeugen1795
Formular-DC mit GetDC erzeugen1796
36.5.3 Koordinatensysteme und Abbildungsmodi1797
36.5.4 Zeichenwerkzeuge/Objekte1801
Erzeugen und Parametrieren der Objekte1802
36.5.5 Bitmaps1803
Bitmaps kopieren1805
Bitmaps skalieren1806
36.6 Praxisbeispiele1807
36.6.1 Die Transformationsmatrix verstehen1807
Oberfläche1807
Quelltext1807
Test1809
36.6.2 Eine 3D-Grafikausgabe in Aktion1810
Oberfläche1810
Quelltext1810
Test/Bemerkungen1812
36.6.3 Einen Fenster-Screenshot erzeugen1813
Oberfläche1813
Quelltext1813
Test1814
Bemerkung1815
37 Ressourcen/Lokalisierung1816
37.1 Manifestressourcen1816
37.1.1 Erstellen von Manifestressourcen1816
37.1.2 Zugriff auf Manifestressourcen1818
Namensgebung eingebetteter Ressourcen1818
Auflisten aller eingebetteten Ressourcen1818
Die Inhalte eingebetteter Ressourcen auslesen1819
37.2 Typisierte Ressourcen1820
37.2.1 Erzeugen von .resources-Dateien1820
37.2.2 Hinzufügen der .resources-Datei zum Projekt1820
37.2.3 Zugriff auf die Inhalte von .resources-Dateien1821
Bemerkungen zum Zugriff auf .resources-Dateien1821
37.2.4 ResourceManager einer .resources-Datei erzeugen1821
Bemerkungen1822
37.2.5 Was sind .resx-Dateien?1822
37.3 Streng typisierte Ressourcen1822
37.3.1 Erzeugen streng typisierter Ressourcen1823
37.3.2 Verwenden streng typisierter Ressourcen1823
37.3.3 Streng typisierte Ressourcen per Reflection auslesen1824
37.4 Anwendungen lokalisieren1826
37.4.1 Localizable und Language1826
37.4.2 Beispiel "Landesfahnen"1826
37.4.3 Einstellen der aktuellen Kultur zur Laufzeit1829
Bemerkungen1830
38 Komponentenentwicklung1832
38.1 Überblick1832
38.2 Benutzersteuerelement1833
38.2.1 Entwickeln einer Auswahl-ListBox1833
Oberflächendesign1834
Implementieren der Programmlogik1834
38.2.2 Komponente verwenden1835
38.3 Benutzerdefiniertes Steuerelement1836
38.3.1 Entwickeln eines BlinkLabels1836
Oberflächendesign1837
Festlegen des Typs des Vorfahren1837
Implementieren der Programmlogik1838
38.3.2 Verwenden der Komponente1839
38.4 Komponentenklasse1839
38.5 Eigenschaften1840
38.5.1 Einfache Eigenschaften1840
38.5.2 Schreib-/Lesezugriff (Get/Set)1840
38.5.3 Nur Lese-Eigenschaft (ReadOnly)1841
38.5.4 Nur-Schreibzugriff (WriteOnly)1842
38.5.5 Hinzufügen von Beschreibungen1842
38.5.6 Ausblenden im Eigenschaftenfenster1842
38.5.7 Einfügen in Kategorien1843
38.5.8 Default-Wert einstellen1843
38.5.9 Standard-Eigenschaft (Indexer)1844
38.5.10 Wertebereichsbeschränkung und Fehlerprüfung1844
38.5.11 Eigenschaften von Aufzählungstypen1846
38.5.12 Standard Objekt-Eigenschaften1847
38.5.13 Eigene Objekt-Eigenschaften1847
38.6 Methoden1849
38.6.1 Konstruktor1850
38.6.2 Class-Konstruktor1851
38.6.3 Destruktor1852
38.6.4 Aufruf des Basisklassen-Konstruktors1852
38.6.5 Aufruf von Basisklassen-Methoden1853
38.7 Ereignisse (Events)1853
38.7.1 Ereignis mit Standardargument definieren1854
38.7.2 Ereignis mit eigenen Argumenten1855
38.7.3 Ein Default-Ereignis festlegen1856
38.7.4 Mit Ereignissen auf Windows-Messages reagieren1856
38.8 Weitere Themen1858
38.8.1 Wohin mit der Komponente?1858
38.8.2 Assembly-Informationen festlegen1859
38.8.3 Assemblies signieren1862
Erstellen eines AssemblyKey-File1862
38.8.4 Komponenten-Ressourcen einbetten1862
38.8.5 Der Komponente ein Icon zuordnen1863
Icon erstellen1863
38.8.6 Den Designmodus erkennen1864
38.8.7 Komponenten lizenzieren1864
Verwendung der LicFileLicenseProvider-Klasse1865
Ableiten der LicFileLicenseProvider-Klasse1866
Bemerkung1868
38.9 Praxisbeispiele1868
38.9.1 AnimGif – Anzeige von Animationen1868
Oberfläche/Ressourcen1868
Quelltext1869
Test1871
38.9.2 Eine FontComboBox entwickeln1871
Quelltext1871
Test1873
38.9.3 Das PropertyGrid verwenden1873
Oberfläche1873
Quelltext1873
Test1875
39 Einführung in ASP.NET1878
39.1 ASP.NET für Ein- und Umsteiger1878
39.1.1 ASP – Ein kurzer Blick zurück1878
39.1.2 Was ist bei ASP.NET anders?1879
39.1.3 Was gibt es noch in ASP.NET?1881
39.1.4 Vorteile von ASP.NET gegenüber ASP1882
39.1.5 Voraussetzungen für den Einsatz von ASP.NET1883
39.1.6 Und was hat das alles mit C# zu tun?1883
Grundsätzlicher Projektaufbau1884
39.2 Unsere erste Web-Anwendung1886
39.2.1 Visueller Entwurf der Bedienoberfläche1886
39.2.2 Zuweisen der Objekteigenschaften1889
39.2.3 Verknüpfen der Objekte mit Ereignissen1890
39.2.4 Programm kompilieren und testen1891
39.3 Die ASP.NET-Projektdateien1892
39.3.1 Die ASP.NET-Projekttypen1893
ASP.NET-Website1894
ASP.NET-Web-Anwendungen1894
39.3.2 ASPX-Datei(en)1895
39.3.3 Die aspx.cs-Datei(en)1897
39.3.4 Die Datei Global.asax1898
39.3.5 Das Startformular1899
39.3.6 Die Datei Web.config1899
39.3.7 Masterpages (master-Dateien)1902
39.3.8 Sitemap (Web.sitemap)1902
39.3.9 Benutzersteuerelemente (ascx-Dateien)1903
39.3.10 Die Web-Projekt-Verzeichnisse1903
39.4 Lernen am Beispiel1904
39.4.1 Erstellen des Projekts1904
39.4.2 Oberflächengestaltung1905
Formular-Titel setzen1906
39.4.3 Ereignisprogrammierung1906
39.4.4 Ein Fehler, was nun?1908
Einfache Fehlerbehandlung1909
39.4.5 Ereignisse von Textboxen1909
39.4.6 Ein gemeinsamer Ereignis-Handler1910
39.4.7 Eingabefokus setzen1910
39.4.8 Ausgaben in einer Tabelle1911
39.4.9 Scrollen der Anzeige1913
39.4.10 Zusammenspiel mehrerer Formulare1914
Globale Variablen?1914
Das Page_Load-Ereignis1914
39.4.11 Umleiten bei Direktaufruf1915
39.4.12 Ärger mit den Cookies1916
39.4.13 Export auf den IIS1918
39.5 Tipps & Tricks1919
39.5.1 Nachinstallieren IIS 7 bzw. 7.5 (Windows 7)1919
Nachinstallieren1919
ASP.NET registrieren1920
39.5.2 Nachinstallieren IIS8 (Windows 8)1920
40 Übersicht ASP.NET-Controls1922
40.1 Einfache Steuerelemente im Überblick1922
40.1.1 Label1922
AccessKey/AssociatedControlID1923
Datenbindung1923
40.1.2 TextBox1924
40.1.3 Button, ImageButton, LinkButton1925
Click-Ereignis1925
OnClientClick-Eigenschaft1925
PostbackUrl-Eigenschaft1926
40.1.4 CheckBox, RadioButton1926
40.1.5 CheckBoxList, BulletList, RadioButtonList1927
Datenbindung1927
BulletList1928
40.1.6 Table1928
40.1.7 Hyperlink1930
40.1.8 Image, ImageMap1930
40.1.9 Calendar1932
40.1.10 Panel1933
40.1.11 HiddenField1933
40.1.12 Substitution1934
40.1.13 XML1935
Die XML-Daten1935
Die Transformationsdateien1936
Verwendung und Test1937
40.1.14 FileUpload1937
40.1.15 AdRotator1938
40.2 Steuerelemente für die Seitennavigation1939
40.2.1 Mehr Übersicht mit Web.Sitemap1939
40.2.2 Menu1941
Datenbindung an eine SiteMap1942
Menü ohne Datenbindung1943
40.2.3 TreeView1944
TreeView ohne Datenbindung1945
40.2.4 SiteMapPath1947
40.2.5 MultiView, View1948
40.2.6 Wizard1949
40.3 Webseitenlayout/-design1951
40.3.1 Masterpages1951
Masterpage1952
Content Seiten1953
40.3.2 Themes/Skins1954
Zuweisen des aktiven Theme1955
Skin-Datei1955
StyleSheet1956
Grafiken1956
40.3.3 Webparts1957
40.4 Die Validator-Controls1958
40.4.1 Übersicht1958
40.4.2 Wo findet die Fehlerprüfung statt?1959
40.4.3 Verwendung1959
40.4.4 RequiredFieldValidator1960
40.4.5 CompareValidator1961
40.4.6 RangeValidator1963
40.4.7 RegularExpressionValidator1963
40.4.8 CustomValidator1964
Clientseitige Validierung1965
Serverseitige Validierung1965
40.4.9 ValidationSummary1967
40.4.10 Weitere Möglichkeiten1968
Validierung zeitweise verhindern1968
ValidationGroup bilden1968
Eingabefokus setzen1968
40.5 Praxisbeispiele1968
40.5.1 Themes und Skins verstehen1968
Oberfläche1969
Projekt1969
Skin bearbeiten1970
Style Sheet bearbeiten1970
Quelltext1971
Test1972
40.5.2 Masterpages verwenden1973
Oberfläche (Masterpage)1973
Oberfläche (Contentpage)1974
Quelltext1974
Test1975
40.5.3 Webparts verwenden1976
Vorbereiten der Portalseite1976
User Control programmieren1976
Inhalte für die Webzones definieren1977
Programmieren des Werkzeugkastens1978
41 Datenbindung unter ASP.NET1982
41.1 Einstiegsbeispiel1982
41.1.1 Erstellen der ASP.NET-Website1982
Datenbank hinzufügen1983
GridView hinzufügen1984
GridView an Datenquelle anbinden1984
Test1986
41.2 Einführung1987
41.2.1 Konzept1987
41.2.2 Übersicht über die DataSource-Steuerelemente1988
41.3 SQLDataSource1989
41.3.1 Datenauswahl mit Parametern1991
41.3.2 Parameter für INSERT, UPDATE und DELETE1992
41.3.3 Methoden1994
41.3.4 Caching1995
41.3.5 Aktualisieren/Refresh1996
41.4 AccessDataSource1996
41.5 ObjectDataSource1996
41.5.1 Verbindung zwischen Objekt und DataSource1996
41.5.2 Ein Beispiel sorgt für Klarheit1998
41.5.3 Geschäftsobjekte in einer Session verwalten2002
41.6 SitemapDataSource2004
41.7 LinqDataSource2005
41.7.1 Bindung von einfachen Collections2005
41.7.2 Bindung eines LINQ to SQL-DataContext2006
41.8 EntityDataSource2008
41.8.1 Entity Data Model erstellen2008
41.8.2 EntityDataSource anbinden2011
41.8.3 Datenmenge filtern2014
41.9 XmlDataSource2014
41.10 QueryExtender2016
41.10.1 Grundlagen2016
41.10.2 Suchen2017
41.10.3 Sortieren2019
41.11 GridView2020
41.11.1 Auswahlfunktion (Zeilenauswahl)2020
41.11.2 Auswahl mit mehrspaltigem Index2021
41.11.3 Hyperlink-Spalte für Detailansicht2021
41.11.4 Spalten erzeugen2022
41.11.5 Paging realisieren2023
41.11.6 Edit, Update, Delete2025
41.11.7 Keine Daten, was tun?2025
41.12 DetailsView2025
41.13 FormView2027
Datenbindung im Detail2029
41.14 DataList2030
41.14.1 Bearbeitungsfunktionen implementieren2031
41.14.2 Layout verändern2032
41.15 Repeater2033
41.16 ListView2034
41.17 Typisierte Datenbindung2034
41.18 Model Binding2035
41.19 Chart2037
42 ASP.NET-Objekte/-Techniken2040
42.1 Wichtige ASP.NET-Objekte2040
42.1.1 HTTPApplication2040
42.1.2 Application2043
42.1.3 Session2044
Session-Variablen2044
Beenden einer Session2045
Ereignisse2045
42.1.4 Page2046
Eigenschaften2046
Methoden2047
Ereignisse2048
42.1.5 Request2049
Informationen über den Browser ermitteln2049
QueryString-Parameter auslesen2051
42.1.6 Response2052
Eigenschaften2052
Methoden2052
Textausgabe2053
Bilder/Dateien zum Client senden2053
Dynamisch erzeugte Grafiken senden2054
Neue Seiten aufrufen2055
Wir geben zur Protokoll ...2056
42.1.7 Server2056
MapPath2056
MachineName2057
Transfer2057
Execute2057
42.1.8 Cookies verwenden2057
User2060
42.2 Fehlerbehandlung unter ASP.NET2060
42.2.1 Fehler beim Entwurf2060
42.2.2 Laufzeitfehler2060
42.2.3 Eine eigene Fehlerseite2062
42.2.4 Fehlerbehandlung im Web Form2063
42.2.5 Fehlerbehandlung in der Anwendung2064
42.2.6 Alternative Fehlerseite einblenden2065
42.2.7 Lokale Fehlerbehandlung2066
42.2.8 Seite nicht gefunden – was nun?2067
42.3 E-Mail-Versand in ASP.NET2067
42.3.1 Übersicht2068
42.3.2 Mail-Server bestimmen2068
42.3.3 Einfache Text-E-Mails versenden2070
Variante 12070
Variante 22070
42.3.4 E-Mails mit Dateianhang2071
42.4 Sicherheit von Webanwendungen2072
42.4.1 Authentication2072
Anonyme Anmeldung2072
Forms Authentication2073
Windows Authentication2073
42.4.2 Forms Authentication realisieren2073
Login-Dialog2074
Die Änderungen in der Web.config2075
Test2076
Weitere Möglichkeiten der Authentifizierung2077
42.4.3 Impersonation2077
42.4.4 Authorization2078
File Authorization2078
URL Authorization2078
42.4.5 Administrieren der Website2080
Voraussetzung2080
ASP.NET-Konfigurationsoberfläche2081
Auswahl des Authentifizierungstyps2082
Neuen Nutzer erstellen2082
Rechte einschränken2083
42.4.6 Steuerelemente für das Login-Handling2084
Login2084
LoginStatus2085
LoginName2085
LoginView2085
PasswortRecovery2086
CreateUserWizard2087
ChangePasswort2088
42.4.7 Programmieren der Sicherheitseinstellungen2088
42.5 AJAX in ASP.NET-Anwendungen2090
42.5.1 Was ist AJAX und was kann es?2090
42.5.2 Die AJAX-Controls2091
ScriptManager2092
UpdatePanel2092
UpdateProgress2094
Timer2094
42.5.3 AJAX-Control-Toolkit2095
42.6 User Controls/Webbenutzersteuerelemente2096
User Controls2096
Custom Controls2096
42.6.1 Ein simples Einstiegsbeispiel2097
Entwurf2097
Quellcode2098
Einbindung2099
Test2099
Eigene Eigenschaften definieren2099
Fazit2100
42.6.2 Dynamische Grafiken im User Control anzeigen2100
Dynamisches Senden der Grafik2101
Entwurf des Controls2101
Verwendung und Test2103
42.6.3 Grafikausgaben per User Control realisieren2105
Das User Control2105
Einbindung/Programmierung2106
Test2107
43 Silverlight-Entwicklung2110
43.1 Einführung2110
43.1.1 Zielplattformen2111
43.1.2 Silverlight-Applikationstypen2111
Silverlight-Anwendung2112
Silverlight-Navigationsanwendung2112
Silverlight Out-of-Browser-Anwendung2113
43.1.3 Wichtige Unterschiede zu den WPF-Anwendungen2113
Einschränkungen durch das Silverlight-Konzept2113
Unterschiede durch unterschiedliche Codebasis2114
43.1.4 Vor- und Nachteile von Silverlight-Anwendungen2115
WPF-ClickOnce-Anwendungen2115
ASP.NET/AJAX2115
FLASH2116
Fazit2116
Updates/Deinstallation2118
43.2 Die Silverlight-Anwendung im Detail2118
43.2.1 Ein kleines Beispielprojekt2119
43.2.2 Das Application Package und das Test-Web2121
.xap-Package2121
Silverlight.js2121
...TestPage.aspx & ...TestPage.html2122
43.3 Die Projektdateien im Überblick2124
43.3.1 Projektverwaltung mit App.xaml & App.xaml.cs2125
Startup2126
Exit2127
UnhandledException2127
Weitere Eigenschaften und Methoden der Application-Klasse2127
43.3.2 MainPage.xaml & MainPage.xaml.cs2127
43.3.3 AssemblyInfo.cs2128
43.4 Fenster und Seiten in Silverlight2128
43.4.1 Das Standardfenster2129
43.4.2 Untergeordnete Silverlight-Fenster2130
43.4.3 UserControls für die Anzeige von Detaildaten2132
Ein-/Ausblenden von UserControls2132
Hinzufügen/Entfernen von UserControls2132
43.4.4 Echte Windows2133
43.4.5 Navigieren in Silverlight-Anwendungen2134
Projekt erzeugen2134
Die Page-Klasse2135
Der Navigations-Frame2137
43.5 Datenbanken/Datenbindung2139
43.5.1 ASP.NET-Webdienste/WCF-Dienste2140
Einfügen der SQL Server-Datenbank2140
Erstellen des EDM-Datenmodells2141
Erstellen des ASP.NET Webdienstes2142
Alternative: Erstellen eines WCF Dienstes2144
Einbinden der Dienste in das Silverlight-Projekt2145
Konfigurieren der Silverlight-Oberfläche2146
Abrufen der Daten2147
Zusammenfassung2148
43.5.2 WCF Data Services2149
Grundlagen2149
Einfügen der SQL Server-Datenbank2152
Erstellen des Entity Data Models2152
Erstellen des WCF Data Service2153
Einbinden des WCF Data Service in das Silverlight-Projekt2155
Konfigurieren der Silverlight-Oberfläche2155
Abrufen der Daten2156
Bearbeiten der Daten2157
Arbeiten mit LINQ und Erweiterungsmethoden2158
43.6 Isolierter Speicher2160
43.6.1 Grundkonzept2160
43.6.2 Das virtuelle Dateisystem verwalten2161
Wieviel Platz ist verfügbar?2161
Ich will mehr!2162
Unterverzeichnisse erzeugen2162
Anzeige von Dateien und Verzeichnissen2162
Dateien/Verzeichnisse löschen2163
43.6.3 Arbeiten mit Dateien2164
Schreiben2164
Lesen von Dateien2164
43.7 Fulltrust-Anwendungen2165
43.8 Praxisbeispiele2168
43.8.1 Eine Out-of-Browser-Applikation realisieren2168
Vorgehensweise2168
Installation2170
Bemerkungen2171
43.8.2 Out-of-Browser-Anwendung aktualisieren2172
Quellcode2172
43.8.3 Testen auf aktive Internetverbindung2173
Quellcode2173
43.8.4 Auf Out-of-Browser-Anwendung testen2174
Quellcode2174
43.8.5 Den Browser bestimmen2174
Quellcode2174
Test2175
43.8.6 Parameter an das Plug-in übergeben2175
Oberfläche2175
Quellcode (MainPage.xaml.cs)2175
Quellcode (App.xaml.cs)2176
Quellcode der umgebenden HTML-Seite2176
Test2177
43.8.7 Auf den QueryString zugreifen2177
Oberfläche2177
Quellcode2177
Test2178
43.8.8 Timer in Silverlight nutzen2178
Oberfläche2178
Quellcode2178
Test2179
43.8.9 Dateien lokal speichern2179
Oberfläche2179
Quellcode2180
Bemerkung2180
43.8.10 Drag & Drop realisieren2181
Oberfläche2181
Quelltext2181
Test2182
43.8.11 Auf die Zwischenablage zugreifen2182
Oberfläche2182
Quelltext2183
Test2183
43.8.12 Weitere Fenster öffnen2184
Oberfläche (MainPage)2184
Quellcode (MainPage.xaml.cs)2185
Oberfläche (SilverlightControl1)2186
Quellcode (SilverlightControl1.xaml.cs)2186
Test2186
Bemerkungen2186
Index2188

Weitere E-Books zum Thema: Programmiersprachen - Softwareentwicklung

ASP.NET Shortcut

E-Book ASP.NET Shortcut
Format: PDF

Shortcut-Tipps für ASP.NET-Profis Die neue .NET-Version der Active Server Pages stellt eine Umgebung zur Entwicklung von Web-Applikationen im .NET-Framework bereit. Viele aus der Desktop-…

ASP.NET Shortcut

E-Book ASP.NET Shortcut
Format: PDF

Shortcut-Tipps für ASP.NET-Profis Die neue .NET-Version der Active Server Pages stellt eine Umgebung zur Entwicklung von Web-Applikationen im .NET-Framework bereit. Viele aus der Desktop-…

ASP.NET Shortcut

E-Book ASP.NET Shortcut
Format: PDF

Shortcut-Tipps für ASP.NET-Profis Die neue .NET-Version der Active Server Pages stellt eine Umgebung zur Entwicklung von Web-Applikationen im .NET-Framework bereit. Viele aus der Desktop-…

Programmieren lernen in PHP 5

E-Book Programmieren lernen in PHP 5
Format: PDF

Mit der Version 5 erreicht PHP einen bemerkenswerten Reifegrad, der PHP zu einer festen Größe in der Welt der Webprogrammierung macht. Gerade die leichte Erlernbarkeit macht PHP zur idealen…

Mathematik für Informatiker

E-Book Mathematik für Informatiker
Format: PDF

Die Informatik entwickelt sich in einer unglaublichen Geschwindigkeit. Häufig ist die Mathematik Grundlage von Neuerungen. Deshalb ist sie unverzichtbares Werkzeug jedes Informatikers und Pflichtfach…

Mathematik für Informatiker

E-Book Mathematik für Informatiker
Format: PDF

Die Informatik entwickelt sich in einer unglaublichen Geschwindigkeit. Häufig ist die Mathematik Grundlage von Neuerungen. Deshalb ist sie unverzichtbares Werkzeug jedes Informatikers und Pflichtfach…

Mathematik für Informatiker

E-Book Mathematik für Informatiker
Format: PDF

Die Informatik entwickelt sich in einer unglaublichen Geschwindigkeit. Häufig ist die Mathematik Grundlage von Neuerungen. Deshalb ist sie unverzichtbares Werkzeug jedes Informatikers und Pflichtfach…

Weitere Zeitschriften

aufstieg

aufstieg

Zeitschrift der NaturFreunde in Württemberg Die Natur ist unser Lebensraum: Ort für Erholung und Bewegung, zum Erleben und Forschen; sie ist ein schützenswertes Gut. Wir sind aktiv in der Natur ...

Baumarkt

Baumarkt

Baumarkt enthält eine ausführliche jährliche Konjunkturanalyse des deutschen Baumarktes und stellt die wichtigsten Ergebnisse des abgelaufenen Baujahres in vielen Zahlen und Fakten zusammen. Auf ...

BEHINDERTEPÄDAGOGIK

BEHINDERTEPÄDAGOGIK

Für diese Fachzeitschrift arbeiten namhafte Persönlichkeiten aus den verschiedenen Fotschungs-, Lehr- und Praxisbereichen zusammen. Zu ihren Aufgaben gehören Prävention, Früherkennung, ...

bank und markt

bank und markt

Zeitschrift für Banking - die führende Fachzeitschrift für den Markt und Wettbewerb der Finanzdienstleister, erscheint seit 1972 monatlich. Leitthemen Absatz und Akquise im Multichannel ...

Card-Forum

Card-Forum

Card-Forum ist das marktführende Magazin im Themenbereich der kartengestützten Systeme für Zahlung und Identifikation, Telekommunikation und Kundenbindung sowie der damit verwandten und ...

crescendo

crescendo

Die Zeitschrift für Blas- und Spielleutemusik in NRW - Informationen aus dem Volksmusikerbund NRW - Berichte aus 23 Kreisverbänden mit über 1000 Blasorchestern, Spielmanns- und Fanfarenzügen - ...

küche + raum

küche + raum

Internationale Fachzeitschrift für Küchenforschung und Küchenplanung. Mit Fachinformationen für Küchenfachhändler, -spezialisten und -planer in Küchenstudios, Möbelfachgeschäften und den ...

Eishockey NEWS

Eishockey NEWS

Eishockey NEWS bringt alles über die DEL, die DEL2, die Oberliga sowie die Regionalligen und Informationen über die NHL. Dazu ausführliche Statistiken, Hintergrundberichte, Personalities ...