Doberenz / Gewinnus Visual C# 2015 – Grundlagen, Profiwissen und Rezepte
1. Auflage 2015
ISBN: 978-3-446-44606-9
Verlag: Carl Hanser
Format: PDF
Kopierschutz: 1 - PDF Watermark
E-Book, Deutsch, 1195 Seiten
ISBN: 978-3-446-44606-9
Verlag: Carl Hanser
Format: PDF
Kopierschutz: 1 - PDF Watermark
Autoren/Hrsg.
Fachgebiete
- Mathematik | Informatik EDV | Informatik Programmierung | Softwareentwicklung Programmier- und Skriptsprachen
- Mathematik | Informatik EDV | Informatik Programmierung | Softwareentwicklung Microsoft Programmierung .NET Programmierung
- Mathematik | Informatik EDV | Informatik Programmierung | Softwareentwicklung Objektorientierte Programmierung
Weitere Infos & Material
1;Inhaltsverzeichnis;6
2;Vorwort;46
3;Teil I: Grundlagen;50
3.1;1 Einstieg in Visual Studio 2015;52
3.1.1;1.1 Die Installation von Visual Studio 2015;52
3.1.1.1;1.1.1 Überblick über die Produktpalette;52
3.1.1.2;1.1.2 Anforderungen an Hard- und Software;53
3.1.2;1.2 Unser allererstes C#-Programm;54
3.1.2.1;1.2.1 Vorbereitungen;54
3.1.2.2;1.2.2 Quellcode schreiben;56
3.1.2.3;1.2.3 Programm kompilieren und testen;56
3.1.2.4;1.2.4 Einige Erläuterungen zum Quellcode;57
3.1.2.5;1.2.5 Konsolenanwendungen sind out;58
3.1.3;1.3 Die Windows-Philosophie;58
3.1.3.1;1.3.1 Mensch-Rechner-Dialog;58
3.1.3.2;1.3.2 Objekt- und ereignisorientierte Programmierung;59
3.1.3.3;1.3.3 Programmieren mit Visual Studio 2015;60
3.1.4;1.4 Die Entwicklungsumgebung Visual Studio 2015;61
3.1.4.1;1.4.1 Neues Projekt;62
3.1.4.2;1.4.2 Die wichtigsten Fenster;63
3.1.5;1.5 Microsofts .NET-Technologie;66
3.1.5.1;1.5.1 Zur Geschichte von .NET;66
3.1.5.2;1.5.2 .NET-Features und Begriffe;68
3.1.6;1.6 Wichtige Neuigkeiten in Visual Studio 2015;75
3.1.6.1;1.6.1 Entwicklungsumgebung;75
3.1.6.2;1.6.2 Neue C#-Sprachfeatures;75
3.1.6.3;1.6.3 Code-Editor;76
3.1.6.4;1.6.4 NET Framework 4.6;76
3.1.7;1.7 Praxisbeispiele;77
3.1.7.1;1.7.1 Unsere erste Windows Forms-Anwendung;77
3.1.7.2;1.7.2 Umrechnung Euro-Dollar;81
3.2;2 Grundlagen der Sprache C#;90
3.2.1;2.1 Grundbegriffe;90
3.2.1.1;2.1.1 Anweisungen;90
3.2.1.2;2.1.2 Bezeichner;91
3.2.1.3;2.1.3 Schlüsselwörter;92
3.2.1.4;2.1.4 Kommentare;92
3.2.2;2.2 Datentypen, Variablen und Konstanten;93
3.2.2.1;2.2.1 Fundamentale Typen;93
3.2.2.2;2.2.2 Wertetypen versus Verweistypen;94
3.2.2.3;2.2.3 Benennung von Variablen;95
3.2.2.4;2.2.4 Deklaration von Variablen;95
3.2.2.5;2.2.5 Typsuffixe;97
3.2.2.6;2.2.6 Zeichen und Zeichenketten;98
3.2.2.7;2.2.7 object-Datentyp;100
3.2.2.8;2.2.8 Konstanten deklarieren;100
3.2.2.9;2.2.9 Nullable Types;101
3.2.2.10;2.2.10 Typinferenz;102
3.2.2.11;2.2.11 Gültigkeitsbereiche und Sichtbarkeit;103
3.2.3;2.3 Konvertieren von Datentypen;103
3.2.3.1;2.3.1 Implizite und explizite Konvertierung;103
3.2.3.2;2.3.2 Welcher Datentyp passt zu welchem?;105
3.2.3.3;2.3.3 Konvertieren von string;106
3.2.3.4;2.3.4 Die Convert-Klasse;108
3.2.3.5;2.3.5 Die Parse-Methode;108
3.2.3.6;2.3.6 Boxing und Unboxing;109
3.2.4;2.4 Operatoren;110
3.2.4.1;2.4.1 Arithmetische Operatoren;111
3.2.4.2;2.4.2 Zuweisungsoperatoren;112
3.2.4.3;2.4.3 Logische Operatoren;113
3.2.4.4;2.4.4 Rangfolge der Operatoren;116
3.2.5;2.5 Kontrollstrukturen;117
3.2.5.1;2.5.1 Verzweigungsbefehle;117
3.2.5.2;2.5.2 Schleifenanweisungen;120
3.2.6;2.6 Benutzerdefinierte Datentypen;123
3.2.6.1;2.6.1 Enumerationen;123
3.2.6.2;2.6.2 Strukturen;124
3.2.7;2.7 Nutzerdefinierte Methoden;126
3.2.7.1;2.7.1 Methoden mit Rückgabewert;127
3.2.7.2;2.7.2 Methoden ohne Rückgabewert;128
3.2.7.3;2.7.3 Parameterübergabe mit ref;129
3.2.7.4;2.7.4 Parameterübergabe mit out;130
3.2.7.5;2.7.5 Methodenüberladung;131
3.2.7.6;2.7.6 Optionale Parameter;132
3.2.7.7;2.7.7 Benannte Parameter;133
3.2.8;2.8 Praxisbeispiele;134
3.2.8.1;2.8.1 Vom PAP zur Konsolenanwendung;134
3.2.8.2;2.8.2 Ein Konsolen- in ein Windows-Programm verwandeln;136
3.2.8.3;2.8.3 Schleifenanweisungen verstehen;138
3.2.8.4;2.8.4 Benutzerdefinierte Methoden überladen;140
3.2.8.5;2.8.5 Anwendungen von Visual Basic nach C# portieren;143
3.3;3 OOP-Konzepte;150
3.3.1;3.1 Kleine Einführung in die OOP;150
3.3.1.1;3.1.1 Historische Entwicklung;150
3.3.1.2;3.1.2 Grundbegriffe der OOP;152
3.3.1.3;3.1.3 Sichtbarkeit von Klassen und ihren Mitgliedern;154
3.3.1.4;3.1.4 Allgemeiner Aufbau einer Klasse;155
3.3.1.5;3.1.5 Das Erzeugen eines Objekts;156
3.3.1.6;3.1.6 Einführungsbeispiel;159
3.3.2;3.2 Eigenschaften;164
3.3.2.1;3.2.1 Eigenschaften mit Zugriffsmethoden kapseln;164
3.3.2.2;3.2.2 Berechnete Eigenschaften;166
3.3.2.3;3.2.3 Lese-/Schreibschutz;168
3.3.2.4;3.2.4 Property-Accessoren;169
3.3.2.5;3.2.5 Statische Felder/Eigenschaften;169
3.3.2.6;3.2.6 Einfache Eigenschaften automatisch implementieren;172
3.3.3;3.3 Methoden;173
3.3.3.1;3.3.1 Öffentliche und private Methoden;173
3.3.3.2;3.3.2 Überladene Methoden;174
3.3.3.3;3.3.3 Statische Methoden;175
3.3.4;3.4 Ereignisse;177
3.3.4.1;3.4.1 Ereignis hinzufügen;177
3.3.4.2;3.4.2 Ereignis verwenden;180
3.3.5;3.5 Arbeiten mit Konstruktor und Destruktor;183
3.3.5.1;3.5.1 Konstruktor und Objektinitialisierer;183
3.3.5.2;3.5.2 Destruktor und Garbage Collector;186
3.3.5.3;3.5.3 Mit using den Lebenszyklus des Objekts kapseln;189
3.3.5.4;3.5.4 Verzögerte Initialisierung;189
3.3.6;3.6 Vererbung und Polymorphie;190
3.3.6.1;3.6.1 Klassendiagramm;190
3.3.6.2;3.6.2 Method-Overriding;191
3.3.6.3;3.6.3 Klassen implementieren;192
3.3.6.4;3.6.4 Implementieren der Objekte;195
3.3.6.5;3.6.5 Ausblenden von Mitgliedern durch Vererbung;197
3.3.6.6;3.6.6 Allgemeine Hinweise und Regeln zur Vererbung;198
3.3.6.7;3.6.7 Polymorphes Verhalten;200
3.3.6.8;3.6.8 Die Rolle von System.Object;202
3.3.7;3.7 Spezielle Klassen;203
3.3.7.1;3.7.1 Abstrakte Klassen;203
3.3.7.2;3.7.2 Versiegelte Klassen;205
3.3.7.3;3.7.3 Partielle Klassen;205
3.3.7.4;3.7.4 Statische Klassen;206
3.3.8;3.8 Schnittstellen (Interfaces);207
3.3.8.1;3.8.1 Definition einer Schnittstelle;208
3.3.8.2;3.8.2 Implementieren einer Schnittstelle;208
3.3.8.3;3.8.3 Abfragen, ob Schnittstelle vorhanden ist;209
3.3.8.4;3.8.4 Mehrere Schnittstellen implementieren;210
3.3.8.5;3.8.5 Schnittstellenprogrammierung ist ein weites Feld;210
3.3.9;3.9 Praxisbeispiele;210
3.3.9.1;3.9.1 Eigenschaften sinnvoll kapseln;210
3.3.9.2;3.9.2 Eine statische Klasse anwenden;213
3.3.9.3;3.9.3 Vom fetten zum schlanken Client;215
3.3.9.4;3.9.4 Schnittstellenvererbung verstehen;227
3.3.9.5;3.9.5 Rechner für komplexe Zahlen;232
3.3.9.6;3.9.6 Formel-Rechner mit dem CodeDOM;241
3.3.9.7;3.9.7 Berechnungsergebnisse als Diagramm darstellen;249
3.3.9.8;3.9.8 Sortieren mit IComparable/IComparer;253
3.3.9.9;3.9.9 Einen Objektbaum in generischen Listen abspeichern;258
3.3.9.10;3.9.10 OOP beim Kartenspiel erlernen;264
3.3.9.11;3.9.11 Eine Klasse zur Matrizenrechnung entwickeln;268
3.4;4 Arrays, Strings, Funktionen;274
3.4.1;4.1 Datenfelder (Arrays);274
3.4.1.1;4.1.1 Array deklarieren;274
3.4.1.2;4.1.2 Array instanziieren;275
3.4.1.3;4.1.3 Array initialisieren;275
3.4.1.4;4.1.4 Zugriff auf Array-Elemente;276
3.4.1.5;4.1.5 Zugriff mittels Schleife;277
3.4.1.6;4.1.6 Mehrdimensionale Arrays;278
3.4.1.7;4.1.7 Zuweisen von Arrays;280
3.4.1.8;4.1.8 Arrays aus Strukturvariablen;281
3.4.1.9;4.1.9 Löschen und Umdimensionieren von Arrays;282
3.4.1.10;4.1.10 Eigenschaften und Methoden von Arrays;283
3.4.1.11;4.1.11 Übergabe von Arrays;285
3.4.2;4.2 Verarbeiten von Zeichenketten;286
3.4.2.1;4.2.1 Zuweisen von Strings;286
3.4.2.2;4.2.2 Eigenschaften und Methoden von String-Variablen;287
3.4.2.3;4.2.3 Wichtige Methoden der String-Klasse;289
3.4.2.4;4.2.4 Die StringBuilder-Klasse;291
3.4.3;4.3 Reguläre Ausdrücke;293
3.4.3.1;4.3.1 Wozu werden reguläre Ausdrücke verwendet?;294
3.4.3.2;4.3.2 Eine kleine Einführung;294
3.4.3.3;4.3.3 Wichtige Methoden/Eigenschaften der Klasse Regex;295
3.4.3.4;4.3.4 Kompilierte reguläre Ausdrücke;297
3.4.3.5;4.3.5 RegexOptions-Enumeration;298
3.4.3.6;4.3.6 Metazeichen (Escape-Zeichen);298
3.4.3.7;4.3.7 Zeichenmengen (Character Sets);299
3.4.3.8;4.3.8 Quantifizierer;301
3.4.3.9;4.3.9 Zero-Width Assertions;302
3.4.3.10;4.3.10 Gruppen;305
3.4.3.11;4.3.11 Text ersetzen;306
3.4.3.12;4.3.12 Text splitten;307
3.4.4;4.4 Datums- und Zeitberechnungen;308
3.4.4.1;4.4.1 Die DateTime-Struktur;308
3.4.4.2;4.4.2 Wichtige Eigenschaften von DateTime-Variablen;309
3.4.4.3;4.4.3 Wichtige Methoden von DateTime-Variablen;310
3.4.4.4;4.4.4 Wichtige Mitglieder der DateTime-Struktur;310
3.4.4.5;4.4.5 Konvertieren von Datumstrings in DateTime-Werte;311
3.4.4.6;4.4.6 Die TimeSpan-Struktur;312
3.4.5;4.5 Mathematische Funktionen;313
3.4.5.1;4.5.1 Überblick;313
3.4.5.2;4.5.2 Zahlen runden;314
3.4.5.3;4.5.3 Winkel umrechnen;314
3.4.5.4;4.5.4 Potenz- und Wurzeloperationen;314
3.4.5.5;4.5.5 Logarithmus und Exponentialfunktionen;315
3.4.5.6;4.5.6 Zufallszahlen erzeugen;315
3.4.6;4.6 Zahlen- und Datumsformatierungen;316
3.4.6.1;4.6.1 Anwenden der ToString-Methode;316
3.4.6.2;4.6.2 Anwenden der Format-Methode;318
3.4.6.3;4.6.3 Stringinterpolation;319
3.4.7;4.7 Praxisbeispiele;320
3.4.7.1;4.7.1 Zeichenketten verarbeiten;320
3.4.7.2;4.7.2 Zeichenketten mit StringBuilder addieren;323
3.4.7.3;4.7.3 Reguläre Ausdrücke testen;326
3.4.7.4;4.7.4 Methodenaufrufe mit Array-Parametern;328
3.5;5 Weitere Sprachfeatures;332
3.5.1;5.1 Namespaces (Namensräume);332
3.5.1.1;5.1.1 Ein kleiner Überblick;332
3.5.1.2;5.1.2 Einen eigenen Namespace einrichten;333
3.5.1.3;5.1.3 Die using-Anweisung;334
3.5.1.4;5.1.4 Namespace Alias;335
3.5.1.5;5.1.5 Namespace Alias Qualifizierer;335
3.5.2;5.2 Operatorenüberladung;336
3.5.2.1;5.2.1 Syntaxregeln;336
3.5.2.2;5.2.2 Praktische Anwendung;337
3.5.3;5.3 Collections (Auflistungen);338
3.5.3.1;5.3.1 Die Schnittstelle IEnumerable;338
3.5.3.2;5.3.2 ArrayList;340
3.5.3.3;5.3.3 Hashtable;342
3.5.3.4;5.3.4 Indexer;342
3.5.4;5.4 Generics;344
3.5.4.1;5.4.1 Klassische Vorgehensweise;345
3.5.4.2;5.4.2 Generics bieten Typsicherheit;346
3.5.4.3;5.4.3 Generische Methoden;347
3.5.4.4;5.4.4 Iteratoren;348
3.5.5;5.5 Generische Collections;349
3.5.5.1;5.5.1 List-Collection statt ArrayList;349
3.5.5.2;5.5.2 Vorteile generischer Collections;350
3.5.5.3;5.5.3 Constraints;350
3.5.6;5.6 Das Prinzip der Delegates;350
3.5.6.1;5.6.1 Delegates sind Methodenzeiger;351
3.5.6.2;5.6.2 Einen Delegate-Typ deklarieren;351
3.5.6.3;5.6.3 Ein Delegate-Objekt erzeugen;351
3.5.6.4;5.6.4 Delegates vereinfacht instanziieren;353
3.5.6.5;5.6.5 Anonyme Methoden;354
3.5.6.6;5.6.6 Lambda-Ausdrücke;355
3.5.6.7;5.6.7 Lambda-Ausdrücke in der Task Parallel Library;357
3.5.7;5.7 Dynamische Programmierung;359
3.5.7.1;5.7.1 Wozu dynamische Programmierung?;359
3.5.7.2;5.7.2 Das Prinzip der dynamischen Programmierung;359
3.5.7.3;5.7.3 Optionale Parameter sind hilfreich;362
3.5.7.4;5.7.4 Kovarianz und Kontravarianz;363
3.5.8;5.8 Weitere Datentypen;363
3.5.8.1;5.8.1 BigInteger;363
3.5.8.2;5.8.2 Complex;366
3.5.8.3;5.8.3 Tuple<>;366
3.5.8.4;5.8.4 SortedSet<>;367
3.5.9;5.9 Praxisbeispiele;368
3.5.9.1;5.9.1 ArrayList versus generische List;368
3.5.9.2;5.9.2 Generische IEnumerable-Interfaces implementieren;372
3.5.9.3;5.9.3 Delegates, anonyme Methoden, Lambda Expressions;375
3.5.9.4;5.9.4 Dynamischer Zugriff auf COM Interop;379
3.6;6 Einführung in LINQ;382
3.6.1;6.1 LINQ-Grundlagen;382
3.6.1.1;6.1.1 Die LINQ-Architektur;382
3.6.1.2;6.1.2 Anonyme Typen;383
3.6.1.3;6.1.3 Erweiterungsmethoden;385
3.6.2;6.2 Abfragen mit LINQ to Objects;386
3.6.2.1;6.2.1 Grundlegendes zur LINQ-Syntax;386
3.6.2.2;6.2.2 Zwei alternative Schreibweisen von LINQ Abfragen;387
3.6.2.3;6.2.3 Übersicht der wichtigsten Abfrage-Operatoren;388
3.6.3;6.3 LINQ-Abfragen im Detail;389
3.6.3.1;6.3.1 Die Projektionsoperatoren Select und SelectMany;390
3.6.3.2;6.3.2 Der Restriktionsoperator Where;391
3.6.3.3;6.3.3 Die Sortierungsoperatoren OrderBy und ThenBy;392
3.6.3.4;6.3.4 Der Gruppierungsoperator GroupBy;393
3.6.3.5;6.3.5 Verknüpfen mit Join;396
3.6.3.6;6.3.6 Aggregat-Operatoren;396
3.6.3.7;6.3.7 Verzögertes Ausführen von LINQ-Abfragen;398
3.6.3.8;6.3.8 Konvertierungsmethoden;399
3.6.3.9;6.3.9 Abfragen mit PLINQ;399
3.6.4;6.4 Praxisbeispiele;402
3.6.4.1;6.4.1 Die Syntax von LINQ-Abfragen verstehen;402
3.6.4.2;6.4.2 Aggregat-Abfragen mit LINQ;405
3.6.4.3;6.4.3 LINQ im Schnelldurchgang erlernen;408
3.6.4.4;6.4.4 Strings mit LINQ abfragen und filtern;410
3.6.4.5;6.4.5 Duplikate aus einer Liste oder einem Array entfernen;411
3.6.4.6;6.4.6 Arrays mit LINQ initialisieren;414
3.6.4.7;6.4.7 Arrays per LINQ mit Zufallszahlen füllen;416
3.6.4.8;6.4.8 Einen String mit Wiederholmuster erzeugen;418
3.6.4.9;6.4.9 Mit LINQ Zahlen und Strings sortieren;419
3.6.4.10;6.4.10 Mit LINQ Collections von Objekten sortieren;420
3.6.4.11;6.4.11 Ergebnisse von LINQ-Abfragen in ein Array kopieren;423
4;Teil II: Technologien;424
4.1;7 Zugriff auf das Dateisystem;426
4.1.1;7.1 Grundlagen;426
4.1.1.1;7.1.1 Klassen für den Zugriff auf das Dateisystem;427
4.1.1.2;7.1.2 Statische versus Instanzen-Klasse;427
4.1.2;7.2 Übersichten;428
4.1.2.1;7.2.1 Methoden der Directory-Klasse;428
4.1.2.2;7.2.2 Methoden eines DirectoryInfo-Objekts;429
4.1.2.3;7.2.3 Eigenschaften eines DirectoryInfo-Objekts;429
4.1.2.4;7.2.4 Methoden der File-Klasse;429
4.1.2.5;7.2.5 Methoden eines FileInfo-Objekts;430
4.1.2.6;7.2.6 Eigenschaften eines FileInfo-Objekts;431
4.1.3;7.3 Operationen auf Verzeichnisebene;431
4.1.3.1;7.3.1 Existenz eines Verzeichnisses/einer Datei feststellen;431
4.1.3.2;7.3.2 Verzeichnisse erzeugen und löschen;432
4.1.3.3;7.3.3 Verzeichnisse verschieben und umbenennen;432
4.1.3.4;7.3.4 Aktuelles Verzeichnis bestimmen;433
4.1.3.5;7.3.5 Unterverzeichnisse ermitteln;433
4.1.3.6;7.3.6 Alle Laufwerke ermitteln;433
4.1.3.7;7.3.7 Dateien kopieren und verschieben;434
4.1.3.8;7.3.8 Dateien umbenennen;435
4.1.3.9;7.3.9 Dateiattribute feststellen;435
4.1.3.10;7.3.10 Verzeichnis einer Datei ermitteln;437
4.1.3.11;7.3.11 Alle im Verzeichnis enthaltenen Dateien ermitteln;437
4.1.3.12;7.3.12 Dateien und Unterverzeichnisse ermitteln;437
4.1.4;7.4 Zugriffsberechtigungen;438
4.1.4.1;7.4.1 ACL und ACE;438
4.1.4.2;7.4.2 SetAccessControl-Methode;439
4.1.4.3;7.4.3 Zugriffsrechte anzeigen;439
4.1.5;7.5 Weitere wichtige Klassen;440
4.1.5.1;7.5.1 Die Path-Klasse;440
4.1.5.2;7.5.2 Die Klasse FileSystemWatcher;441
4.1.6;7.6 Datei- und Verzeichnisdialoge;442
4.1.6.1;7.6.1 OpenFileDialog und SaveFileDialog;443
4.1.6.2;7.6.2 FolderBrowserDialog;444
4.1.7;7.7 Praxisbeispiele;445
4.1.7.1;7.7.1 Infos über Verzeichnisse und Dateien gewinnen;445
4.1.7.2;7.7.2 Eine Verzeichnisstruktur in die TreeView einlesen;449
4.1.7.3;7.7.3 Mit LINQ und RegEx Verzeichnisbäume durchsuchen;451
4.2;8 Dateien lesen und schreiben;456
4.2.1;8.1 Grundprinzip der Datenpersistenz;456
4.2.1.1;8.1.1 Dateien und Streams;456
4.2.1.2;8.1.2 Die wichtigsten Klassen;457
4.2.1.3;8.1.3 Erzeugen eines Streams;458
4.2.2;8.2 Dateiparameter;458
4.2.2.1;8.2.1 FileAccess;458
4.2.2.2;8.2.2 FileMode;458
4.2.2.3;8.2.3 FileShare;459
4.2.3;8.3 Textdateien;459
4.2.3.1;8.3.1 Eine Textdatei beschreiben bzw. neu anlegen;459
4.2.3.2;8.3.2 Eine Textdatei lesen;461
4.2.4;8.4 Binärdateien;462
4.2.4.1;8.4.1 Lese-/Schreibzugriff;462
4.2.4.2;8.4.2 Die Methoden ReadAllBytes und WriteAllBytes;463
4.2.4.3;8.4.3 Erzeugen von BinaryReader/BinaryWriter;463
4.2.5;8.5 Sequenzielle Dateien;464
4.2.5.1;8.5.1 Lesen und schreiben von strukturierten Daten;464
4.2.5.2;8.5.2 Serialisieren von Objekten;465
4.2.6;8.6 Dateien verschlüsseln und komprimieren;466
4.2.6.1;8.6.1 Das Methodenpärchen Encrypt/Decrypt;466
4.2.6.2;8.6.2 Verschlüsseln unter Windows Vista/7/8/10;466
4.2.6.3;8.6.3 Verschlüsseln mit der CryptoStream-Klasse;467
4.2.6.4;8.6.4 Dateien komprimieren;468
4.2.7;8.7 Memory Mapped Files;469
4.2.7.1;8.7.1 Grundprinzip;469
4.2.7.2;8.7.2 Erzeugen eines MMF;470
4.2.7.3;8.7.3 Erstellen eines Map View;471
4.2.8;8.8 Praxisbeispiele;472
4.2.8.1;8.8.1 Auf eine Textdatei zugreifen;472
4.2.8.2;8.8.2 Einen Objektbaum persistent speichern;475
4.2.8.3;8.8.3 Ein Memory Mapped File (MMF) verwenden;482
4.2.8.4;8.8.4 Hex-Dezimal-Bytes-Konverter;484
4.2.8.5;8.8.5 Eine Datei verschlüsseln;488
4.2.8.6;8.8.6 Eine Datei komprimieren;491
4.2.8.7;8.8.7 Echte ZIP-Dateien erstellen;493
4.2.8.8;8.8.8 PDFs erstellen/exportieren;495
4.2.8.9;8.8.9 Eine CSV-Datei erstellen;498
4.2.8.10;8.8.10 Eine CSV-Datei mit LINQ lesen und auswerten;501
4.2.8.11;8.8.11 Einen korrekten Dateinamen erzeugen;504
4.3;9 Asynchrone Programmierung;506
4.3.1;9.1 Übersicht;506
4.3.1.1;9.1.1 Multitasking versus Multithreading;507
4.3.1.2;9.1.2 Deadlocks;508
4.3.1.3;9.1.3 Racing;508
4.3.2;9.2 Programmieren mit Threads;510
4.3.2.1;9.2.1 Einführungsbeispiel;510
4.3.2.2;9.2.2 Wichtige Thread-Methoden;511
4.3.2.3;9.2.3 Wichtige Thread-Eigenschaften;513
4.3.2.4;9.2.4 Einsatz der ThreadPool-Klasse;514
4.3.3;9.3 Sperrmechanismen;516
4.3.3.1;9.3.1 Threading ohne lock;516
4.3.3.2;9.3.2 Threading mit lock;518
4.3.3.3;9.3.3 Die Monitor-Klasse;520
4.3.3.4;9.3.4 Mutex;523
4.3.3.5;9.3.5 Methoden für die parallele Ausführung sperren;525
4.3.3.6;9.3.6 Semaphore;525
4.3.4;9.4 Interaktion mit der Programmoberfläche;527
4.3.4.1;9.4.1 Die Werkzeuge;527
4.3.4.2;9.4.2 Einzelne Steuerelemente mit Invoke aktualisieren;527
4.3.4.3;9.4.3 Mehrere Steuerelemente aktualisieren;529
4.3.4.4;9.4.4 Ist ein Invoke-Aufruf nötig?;529
4.3.4.5;9.4.5 Und was ist mit WPF?;530
4.3.5;9.5 Timer-Threads;531
4.3.6;9.6 Die BackgroundWorker-Komponente;532
4.3.7;9.7 Asynchrone Programmier-Entwurfsmuster;535
4.3.7.1;9.7.1 Kurzübersicht;535
4.3.7.2;9.7.2 Polling;536
4.3.7.3;9.7.3 Callback verwenden;538
4.3.7.4;9.7.4 Callback mit Parameterübergabe verwenden;539
4.3.7.5;9.7.5 Callback mit Zugriff auf die Programm-Oberfläche;540
4.3.8;9.8 Asynchroner Aufruf beliebiger Methoden;541
4.3.8.1;9.8.1 Die Beispielklasse;541
4.3.8.2;9.8.2 Asynchroner Aufruf ohne Callback;543
4.3.8.3;9.8.3 Asynchroner Aufruf mit Callback und Anzeigefunktion;544
4.3.8.4;9.8.4 Aufruf mit Rückgabewerten (per Eigenschaft);545
4.3.8.5;9.8.5 Aufruf mit Rückgabewerten (per EndInvoke);545
4.3.9;9.9 Es geht auch einfacher – async und await;546
4.3.9.1;9.9.1 Der Weg von Synchron zu Asynchron;547
4.3.9.2;9.9.2 Achtung: Fehlerquellen!;549
4.3.9.3;9.9.3 Eigene asynchrone Methoden entwickeln;551
4.3.10;9.10 Praxisbeispiele;553
4.3.10.1;9.10.1 Spieltrieb & Multithreading erleben;553
4.3.10.2;9.10.2 Prozess- und Thread-Informationen gewinnen;566
4.3.10.3;9.10.3 Ein externes Programm starten;571
4.4;10 Die Task Parallel Library;574
4.4.1;10.1 Überblick;574
4.4.1.1;10.1.1 Parallel-Programmierung;574
4.4.1.2;10.1.2 Möglichkeiten der TPL;577
4.4.1.3;10.1.3 Der CLR-Threadpool;577
4.4.2;10.2 Parallele Verarbeitung mit Parallel.Invoke;578
4.4.2.1;10.2.1 Aufrufvarianten;579
4.4.2.2;10.2.2 Einschränkungen;580
4.4.3;10.3 Verwendung von Parallel.For;580
4.4.3.1;10.3.1 Abbrechen der Verarbeitung;582
4.4.3.2;10.3.2 Auswerten des Verarbeitungsstatus;583
4.4.3.3;10.3.3 Und was ist mit anderen Iterator-Schrittweiten?;584
4.4.4;10.4 Collections mit Parallel.ForEach verarbeiten;584
4.4.5;10.5 Die Task-Klasse;585
4.4.5.1;10.5.1 Einen Task erzeugen;585
4.4.5.2;10.5.2 Den Task starten;586
4.4.5.3;10.5.3 Datenübergabe an den Task;588
4.4.5.4;10.5.4 Wie warte ich auf das Ende des Task?;589
4.4.5.5;10.5.5 Tasks mit Rückgabewerten;591
4.4.5.6;10.5.6 Die Verarbeitung abbrechen;594
4.4.5.7;10.5.7 Fehlerbehandlung;597
4.4.5.8;10.5.8 Weitere Eigenschaften;598
4.4.6;10.6 Zugriff auf das User-Interface;599
4.4.6.1;10.6.1 Task-Ende und Zugriff auf die Oberfläche;600
4.4.6.2;10.6.2 Zugriff auf das UI aus dem Task heraus;601
4.4.7;10.7 Weitere Datenstrukturen im Überblick;603
4.4.7.1;10.7.1 Threadsichere Collections;603
4.4.7.2;10.7.2 Primitive für die Threadsynchronisation;604
4.4.8;10.8 Parallel LINQ (PLINQ);604
4.4.9;10.9 Praxisbeispiel: Spieltrieb – Version 2;605
4.4.9.1;10.9.1 Aufgabenstellung;605
4.4.9.2;10.9.2 Global-Klasse;605
4.4.9.3;10.9.3 Controller-Klasse;607
4.4.9.4;10.9.4 LKW-Klasse;608
4.4.9.5;10.9.5 Schiff-Klasse;610
4.4.9.6;10.9.6 Oberfläche;612
4.5;11 Fehlersuche und Behandlung;614
4.5.1;11.1 Der Debugger;614
4.5.1.1;11.1.1 Allgemeine Beschreibung;614
4.5.1.2;11.1.2 Die wichtigsten Fenster;615
4.5.1.3;11.1.3 Debugging-Optionen;618
4.5.1.4;11.1.4 Praktisches Debugging am Beispiel;620
4.5.2;11.2 Arbeiten mit Debug und Trace;624
4.5.2.1;11.2.1 Wichtige Methoden von Debug und Trace;624
4.5.2.2;11.2.2 Besonderheiten der Trace-Klasse;628
4.5.2.3;11.2.3 TraceListener-Objekte;628
4.5.3;11.3 Caller Information;631
4.5.3.1;11.3.1 Attribute;631
4.5.3.2;11.3.2 Anwendung;631
4.5.4;11.4 Fehlerbehandlung;632
4.5.4.1;11.4.1 Anweisungen zur Fehlerbehandlung;632
4.5.4.2;11.4.2 try-catch;633
4.5.4.3;11.4.3 try-finally;638
4.5.4.4;11.4.4 Das Standardverhalten bei Ausnahmen festlegen;640
4.5.4.5;11.4.5 Die Exception-Klasse;641
4.5.4.6;11.4.6 Fehler/Ausnahmen auslösen;642
4.5.4.7;11.4.7 Eigene Fehlerklassen;642
4.5.4.8;11.4.8 Exceptionhandling zur Entwurfszeit;644
4.5.4.9;11.4.9 Code Contracts;645
4.6;12 XML in Theorie und Praxis;646
4.6.1;12.1 XML – etwas Theorie;646
4.6.1.1;12.1.1 Übersicht;646
4.6.1.2;12.1.2 Der XML-Grundaufbau;649
4.6.1.3;12.1.3 Wohlgeformte Dokumente;650
4.6.1.4;12.1.4 Processing Instructions (PI);653
4.6.1.5;12.1.5 Elemente und Attribute;653
4.6.1.6;12.1.6 Verwendbare Zeichensätze;655
4.6.2;12.2 XSD-Schemas;657
4.6.2.1;12.2.1 XSD-Schemas und ADO.NET;657
4.6.2.2;12.2.2 XML-Schemas in Visual Studio analysieren;659
4.6.2.3;12.2.3 XML-Datei mit XSD-Schema erzeugen;662
4.6.2.4;12.2.4 XSD-Schema aus einer XML-Datei erzeugen;663
4.6.3;12.3 Verwendung des DOM unter .NET;664
4.6.3.1;12.3.1 Übersicht;664
4.6.3.2;12.3.2 DOM-Integration in C#;665
4.6.3.3;12.3.3 Laden von Dokumenten;665
4.6.3.4;12.3.4 Erzeugen von XML-Dokumenten;666
4.6.3.5;12.3.5 Auslesen von XML-Dateien;668
4.6.3.6;12.3.6 Direktzugriff auf einzelne Elemente;670
4.6.3.7;12.3.7 Einfügen von Informationen;670
4.6.3.8;12.3.8 Suchen in den Baumzweigen;673
4.6.4;12.4 XML-Verarbeitung mit LINQ to XML;676
4.6.4.1;12.4.1 Die LINQ to XML-API;676
4.6.4.2;12.4.2 Neue XML-Dokumente erzeugen;678
4.6.4.3;12.4.3 Laden und Sichern von XML-Dokumenten;680
4.6.4.4;12.4.4 Navigieren in XML-Daten;681
4.6.4.5;12.4.5 Auswählen und Filtern;683
4.6.4.6;12.4.6 Manipulieren der XML-Daten;683
4.6.4.7;12.4.7 XML-Dokumente transformieren;685
4.6.5;12.5 Weitere Möglichkeiten der XML-Verarbeitung;688
4.6.5.1;12.5.1 Die relationale Sicht mit XmlDataDocument;688
4.6.5.2;12.5.2 XML-Daten aus Objektstrukturen erzeugen;691
4.6.5.3;12.5.3 Schnelles Suchen in XML-Daten mit XPathNavigator;694
4.6.5.4;12.5.4 Schnelles Auslesen von XML-Daten mit XmlReader;697
4.6.5.5;12.5.5 Erzeugen von XML-Daten mit XmlWriter;699
4.6.5.6;12.5.6 XML transformieren mit XSLT;701
4.6.6;12.6 Praxisbeispiele;703
4.6.6.1;12.6.1 Mit dem DOM in XML-Dokumenten navigieren;703
4.6.6.2;12.6.2 XML-Daten in eine TreeView einlesen;706
4.6.6.3;12.6.3 Ein DataSet in einen XML-String konvertieren;710
4.6.6.4;12.6.4 Ein DataSet in einer XML-Datei speichern;714
4.6.6.5;12.6.5 In Dokumenten mit dem XPathNavigator navigieren;717
4.7;13 Einführung in ADO.NET;722
4.7.1;13.1 Eine kleine Übersicht;722
4.7.1.1;13.1.1 Die ADO.NET-Klassenhierarchie;722
4.7.1.2;13.1.2 Die Klassen der Datenprovider;723
4.7.1.3;13.1.3 Das Zusammenspiel der ADO.NET-Klassen;726
4.7.2;13.2 Das Connection-Objekt;727
4.7.2.1;13.2.1 Allgemeiner Aufbau;727
4.7.2.2;13.2.2 OleDbConnection;727
4.7.2.3;13.2.3 Schließen einer Verbindung;729
4.7.2.4;13.2.4 Eigenschaften des Connection-Objekts;729
4.7.2.5;13.2.5 Methoden des Connection-Objekts;731
4.7.2.6;13.2.6 Der ConnectionStringBuilder;732
4.7.3;13.3 Das Command-Objekt;732
4.7.3.1;13.3.1 Erzeugen und Anwenden eines Command-Objekts;733
4.7.3.2;13.3.2 Erzeugen mittels CreateCommand-Methode;733
4.7.3.3;13.3.3 Eigenschaften des Command-Objekts;734
4.7.3.4;13.3.4 Methoden des Command-Objekts;736
4.7.3.5;13.3.5 Freigabe von Connection- und Command-Objekten;737
4.7.4;13.4 Parameter-Objekte;738
4.7.4.1;13.4.1 Erzeugen und Anwenden eines Parameter-Objekts;738
4.7.4.2;13.4.2 Eigenschaften des Parameter-Objekts;739
4.7.5;13.5 Das CommandBuilder-Objekt;740
4.7.5.1;13.5.1 Erzeugen;740
4.7.5.2;13.5.2 Anwenden;740
4.7.6;13.6 Das DataReader-Objekt;741
4.7.6.1;13.6.1 DataReader erzeugen;741
4.7.6.2;13.6.2 Daten lesen;742
4.7.6.3;13.6.3 Eigenschaften des DataReaders;743
4.7.6.4;13.6.4 Methoden des DataReaders;743
4.7.7;13.7 Das DataAdapter-Objekt;744
4.7.7.1;13.7.1 DataAdapter erzeugen;744
4.7.7.2;13.7.2 Command-Eigenschaften;745
4.7.7.3;13.7.3 Fill-Methode;746
4.7.7.4;13.7.4 Update-Methode;747
4.7.8;13.8 Praxisbeispiele;748
4.7.8.1;13.8.1 Wichtige ADO.NET-Objekte im Einsatz;748
4.7.8.2;13.8.2 Eine Aktionsabfrage ausführen;749
4.7.8.3;13.8.3 Eine Auswahlabfrage aufrufen;752
4.7.8.4;13.8.4 Die Datenbank aktualisieren;754
4.8;14 Das DataSet;758
4.8.1;14.1 Grundlegende Features des DataSets;758
4.8.1.1;14.1.1 Die Objekthierarchie;759
4.8.1.2;14.1.2 Die wichtigsten Klassen;759
4.8.1.3;14.1.3 Erzeugen eines DataSets;760
4.8.2;14.2 Das DataTable-Objekt;761
4.8.2.1;14.2.1 DataTable erzeugen;762
4.8.2.2;14.2.2 Spalten hinzufügen;762
4.8.2.3;14.2.3 Zeilen zur DataTable hinzufügen;763
4.8.2.4;14.2.4 Auf den Inhalt einer DataTable zugreifen;764
4.8.3;14.3 Die DataView;766
4.8.3.1;14.3.1 Erzeugen einer DataView;766
4.8.3.2;14.3.2 Sortieren und Filtern von Datensätzen;766
4.8.3.3;14.3.3 Suchen von Datensätzen;767
4.8.4;14.4 Typisierte DataSets;767
4.8.4.1;14.4.1 Ein typisiertes DataSet erzeugen;768
4.8.4.2;14.4.2 Das Konzept der Datenquellen;769
4.8.4.3;14.4.3 Typisierte DataSets und TableAdapter;770
4.8.5;14.5 Die Qual der Wahl;771
4.8.5.1;14.5.1 DataReader – der schnelle Lesezugriff;772
4.8.5.2;14.5.2 DataSet – die Datenbank im Hauptspeicher;772
4.8.5.3;14.5.3 Objektrelationales Mapping – die Zukunft?;773
4.8.6;14.6 Praxisbeispiele;774
4.8.6.1;14.6.1 In der DataView sortieren und filtern;774
4.8.6.2;14.6.2 Suche nach Datensätzen;776
4.8.6.3;14.6.3 Ein DataSet in einen XML-String serialisieren;777
4.8.6.4;14.6.4 Untypisiertes in ein typisiertes DataSet konvertieren;782
4.8.6.5;14.6.5 Eine LINQ to SQL-Abfrage ausführen;787
4.9;15 Verteilen von Anwendungen;792
4.9.1;15.1 ClickOnce-Deployment;793
4.9.1.1;15.1.1 Übersicht/Einschränkungen;793
4.9.1.2;15.1.2 Die Vorgehensweise;794
4.9.1.3;15.1.3 Ort der Veröffentlichung;794
4.9.1.4;15.1.4 Anwendungsdateien;795
4.9.1.5;15.1.5 Erforderliche Komponenten;795
4.9.1.6;15.1.6 Aktualisierungen;796
4.9.1.7;15.1.7 Veröffentlichungsoptionen;797
4.9.1.8;15.1.8 Veröffentlichen;798
4.9.1.9;15.1.9 Verzeichnisstruktur;798
4.9.1.10;15.1.10 Der Webpublishing-Assistent;800
4.9.1.11;15.1.11 Neue Versionen erstellen;801
4.9.2;15.2 InstallShield;801
4.9.2.1;15.2.1 Installation;801
4.9.2.2;15.2.2 Aktivieren;802
4.9.2.3;15.2.3 Ein neues Setup-Projekt;802
4.9.2.4;15.2.4 Finaler Test;810
4.9.3;15.3 Hilfedateien programmieren;810
4.9.3.1;15.3.1 Der HTML Help Workshop;811
4.9.3.2;15.3.2 Bedienung am Beispiel;812
4.9.3.3;15.3.3 Hilfedateien in die Visual C#-Anwendung einbinden;814
4.9.3.4;15.3.4 Eine alternative Hilfe-IDE verwenden;818
4.10;16 Weitere Techniken;820
4.10.1;16.1 Zugriff auf die Zwischenablage;820
4.10.1.1;16.1.1 Das Clipboard-Objekt;820
4.10.1.2;16.1.2 Zwischenablage-Funktionen für Textboxen;822
4.10.2;16.2 Arbeiten mit der Registry;822
4.10.2.1;16.2.1 Allgemeines;823
4.10.2.2;16.2.2 Registry-Unterstützung in .NET;825
4.10.3;16.3 .NET-Reflection;826
4.10.3.1;16.3.1 Übersicht;826
4.10.3.2;16.3.2 Assembly laden;826
4.10.3.3;16.3.3 Mittels GetType und Type Informationen sammeln;827
4.10.3.4;16.3.4 Dynamisches Laden von Assemblies;829
4.10.4;16.4 Praxisbeispiele;832
4.10.4.1;16.4.1 Zugriff auf die Registry;832
4.10.4.2;16.4.2 Dateiverknüpfungen erzeugen;834
4.10.4.3;16.4.3 Betrachter für Manifestressourcen;836
4.10.4.4;16.4.4 Die Zwischenablage überwachen und anzeigen;839
4.10.4.5;16.4.5 Die WIA-Library kennenlernen;842
4.10.4.6;16.4.6 Auf eine Webcam zugreifen;854
4.10.4.7;16.4.7 Auf den Scanner zugreifen;856
4.10.4.8;16.4.8 OpenOffice.org Writer per OLE steuern;861
4.10.4.9;16.4.9 Nutzer und Gruppen des aktuellen Systems ermitteln;869
4.10.4.10;16.4.10 Testen, ob Nutzer in einer Gruppe enthalten ist;870
4.10.4.11;16.4.11 Testen, ob der Nutzer ein Administrator ist;872
4.10.4.12;16.4.12 Die IP-Adressen des Computers bestimmen;873
4.10.4.13;16.4.13 Die IP-Adresse über den Hostnamen bestimmen;874
4.10.4.14;16.4.14 Diverse Systeminformationen ermitteln;875
4.10.4.15;16.4.15 Environment Variablen auslesen;879
4.10.4.16;16.4.16 Alles über den Bildschirm erfahren;883
4.10.4.17;16.4.17 Sound per MCI aufnehmen;884
4.10.4.18;16.4.18 Mikrofonpegel anzeigen;888
4.10.4.19;16.4.19 Pegeldiagramm aufzeichnen;889
4.10.4.20;16.4.20 Sound-und Video-Dateien per MCI abspielen;893
4.11;17 Konsolenanwendungen;902
4.11.1;17.1 Grundaufbau/Konzepte;902
4.11.1.1;17.1.1 Unser Hauptprogramm – Program.cs;903
4.11.1.2;17.1.2 Rückgabe eines Fehlerstatus;904
4.11.1.3;17.1.3 Parameterübergabe;905
4.11.1.4;17.1.4 Zugriff auf die Umgebungsvariablen;906
4.11.2;17.2 Die Kommandozentrale: System.Console;907
4.11.2.1;17.2.1 Eigenschaften;908
4.11.2.2;17.2.2 Methoden/Ereignisse;908
4.11.2.3;17.2.3 Textausgaben;909
4.11.2.4;17.2.4 Farbangaben;910
4.11.2.5;17.2.5 Tastaturabfragen;911
4.11.2.6;17.2.6 Arbeiten mit Streamdaten;912
4.11.3;17.3 Praxisbeispiel;914
4.11.3.1;17.3.1 Farbige Konsolenanwendung;914
4.11.3.2;17.3.2 Weitere Hinweise und Beispiele;916
5;Teil III: Windows Apps;918
5.1;18 Erste Schritte;920
5.1.1;18.1 Grundkonzepte und Begriffe;920
5.1.1.1;18.1.1 Windows Runtime (WinRT);920
5.1.1.2;18.1.2 Windows Apps;921
5.1.1.3;18.1.3 Fast and Fluid;922
5.1.1.4;18.1.4 Process Sandboxing und Contracts;923
5.1.1.5;18.1.5 .NET WinRT-Profil;925
5.1.1.6;18.1.6 Language Projection;925
5.1.1.7;18.1.7 Vollbildmodus – War da was?;927
5.1.1.8;18.1.8 Windows Store;927
5.1.1.9;18.1.9 Zielplattformen;928
5.1.2;18.2 Entwurfsumgebung;929
5.1.2.1;18.2.1 Betriebssystem;929
5.1.2.2;18.2.2 Windows-Simulator;929
5.1.2.3;18.2.3 Remote-Debugging;932
5.1.3;18.3 Ein (kleines) Einstiegsbeispiel;933
5.1.3.1;18.3.1 Aufgabenstellung;933
5.1.3.2;18.3.2 Quellcode;933
5.1.3.3;18.3.3 Oberflächenentwurf;936
5.1.3.4;18.3.4 Installation und Test;938
5.1.3.5;18.3.5 Touchscreen;940
5.1.3.6;18.3.6 Fazit;940
5.1.4;18.4 Weitere Details zu WinRT;942
5.1.4.1;18.4.1 Wo ist WinRT einzuordnen?;943
5.1.4.2;18.4.2 Die WinRT-API;944
5.1.4.3;18.4.3 Wichtige WinRT-Namespaces;946
5.1.4.4;18.4.4 Der Unterbau;947
5.1.5;18.5 Praxisbeispiel;949
5.1.5.1;18.5.1 WinRT in Desktop-Applikationen nutzen;949
5.2;19 App-Oberflächen entwerfen;954
5.2.1;19.1 Grundkonzepte;954
5.2.1.1;19.1.1 XAML (oder HTML 5) für die Oberfläche;955
5.2.1.2;19.1.2 Die Page, der Frame und das Window;956
5.2.1.3;19.1.3 Das Befehlsdesign;958
5.2.1.4;19.1.4 Die Navigationsdesigns;960
5.2.1.5;19.1.5 Achtung: Fingereingabe!;961
5.2.1.6;19.1.6 Verwendung von Schriftarten;961
5.2.2;19.2 Seitenauswahl und -navigation;962
5.2.2.1;19.2.1 Die Startseite festlegen;962
5.2.2.2;19.2.2 Navigation und Parameterübergabe;962
5.2.2.3;19.2.3 Den Seitenstatus erhalten;963
5.2.3;19.3 App-Darstellung;964
5.2.3.1;19.3.1 Vollbild quer und hochkant;964
5.2.3.2;19.3.2 Was ist mit Andocken und Füllmodus?;965
5.2.3.3;19.3.3 Reagieren auf die Änderung;965
5.2.4;19.4 Skalieren von Apps;967
5.2.5;19.5 Praxisbeispiele;970
5.2.5.1;19.5.1 Seitennavigation und Parameterübergabe;970
5.2.5.2;19.5.2 Die Fensterkopfzeile anpassen;972
5.3;20 Die wichtigsten Controls;974
5.3.1;20.1 Einfache WinRT-Controls;974
5.3.1.1;20.1.1 TextBlock, RichTextBlock;974
5.3.1.2;20.1.2 Button, HyperlinkButton, RepeatButton;977
5.3.1.3;20.1.3 CheckBox, RadioButton, ToggleButton, ToggleSwitch;979
5.3.1.4;20.1.4 TextBox, PasswordBox, RichEditBox;980
5.3.1.5;20.1.5 Image;984
5.3.1.6;20.1.6 ScrollBar, Slider, ProgressBar, ProgressRing;986
5.3.1.7;20.1.7 Border, Ellipse, Rectangle;987
5.3.2;20.2 Layout-Controls;988
5.3.2.1;20.2.1 Canvas;988
5.3.2.2;20.2.2 StackPanel;989
5.3.2.3;20.2.3 ScrollViewer;989
5.3.2.4;20.2.4 Grid;990
5.3.2.5;20.2.5 VariableSizedWrapGrid;991
5.3.2.6;20.2.6 SplitView;992
5.3.2.7;20.2.7 Pivot;996
5.3.2.8;20.2.8 RelativPanel;998
5.3.3;20.3 Listendarstellungen;1000
5.3.3.1;20.3.1 ComboBox, ListBox;1000
5.3.3.2;20.3.2 ListView;1004
5.3.3.3;20.3.3 GridView;1005
5.3.3.4;20.3.4 FlipView;1007
5.3.4;20.4 Sonstige Controls;1009
5.3.4.1;20.4.1 CaptureElement;1009
5.3.4.2;20.4.2 MediaElement;1011
5.3.4.3;20.4.3 Frame;1012
5.3.4.4;20.4.4 WebView;1012
5.3.4.5;20.4.5 ToolTip;1013
5.3.4.6;20.4.6 CalendarDatePicker;1015
5.3.4.7;20.4.7 DatePicker/TimePicker;1016
5.3.5;20.5 Praxisbeispiele;1016
5.3.5.1;20.5.1 Einen StringFormat-Konverter implementieren;1016
5.3.5.2;20.5.2 Besonderheiten der TextBox kennen lernen;1018
5.3.5.3;20.5.3 Daten in der GridView gruppieren;1022
5.3.5.4;20.5.4 Das SemanticZoom-Control verwenden;1026
5.3.5.5;20.5.5 Die CollectionViewSource verwenden;1031
5.3.5.6;20.5.6 Zusammenspiel ListBox/AppBar;1034
5.4;21 Apps im Detail;1038
5.4.1;21.1 Ein Windows App-Projekt im Detail;1038
5.4.1.1;21.1.1 Contracts und Extensions;1039
5.4.1.2;21.1.2 AssemblyInfo.cs;1039
5.4.1.3;21.1.3 Verweise;1041
5.4.1.4;21.1.4 App.xaml und App.xaml.cs;1041
5.4.1.5;21.1.5 Package.appxmanifest;1042
5.4.1.6;21.1.6 Application1_TemporaryKey.pfx;1047
5.4.1.7;21.1.7 MainPage.xaml & MainPage.xaml.cs;1047
5.4.1.8;21.1.8 Assets/Symbole;1048
5.4.1.9;21.1.9 Nach dem Kompilieren;1048
5.4.2;21.2 Der Lebenszyklus einer Windows App;1048
5.4.2.1;21.2.1 Möglichkeiten der Aktivierung von Apps;1050
5.4.2.2;21.2.2 Der Splash Screen;1052
5.4.2.3;21.2.3 Suspending;1052
5.4.2.4;21.2.4 Resuming;1054
5.4.2.5;21.2.5 Beenden von Apps;1054
5.4.2.6;21.2.6 Die Ausnahmen von der Regel;1055
5.4.2.7;21.2.7 Debuggen;1055
5.4.3;21.3 Daten speichern und laden;1059
5.4.3.1;21.3.1 Grundsätzliche Überlegungen;1059
5.4.3.2;21.3.2 Worauf und wie kann ich zugreifen?;1059
5.4.3.3;21.3.3 Das AppData-Verzeichnis;1060
5.4.3.4;21.3.4 Das Anwendungs-Installationsverzeichnis;1062
5.4.3.5;21.3.5 Das Downloads-Verzeichnis;1063
5.4.3.6;21.3.6 Sonstige Verzeichnisse;1064
5.4.3.7;21.3.7 Anwendungsdaten lokal sichern und laden;1064
5.4.3.8;21.3.8 Daten in der Cloud ablegen/laden (Roaming);1066
5.4.3.9;21.3.9 Aufräumen;1068
5.4.3.10;21.3.10 Sensible Informationen speichern;1069
5.4.4;21.4 Praxisbeispiele;1070
5.4.4.1;21.4.1 Die Auto-Play-Funktion unterstützen;1070
5.4.4.2;21.4.2 Einen zusätzlichen Splash Screen einsetzen;1074
5.4.4.3;21.4.3 Eine Dateiverknüpfung erstellen;1076
5.5;22 App-Techniken;1082
5.5.1;22.1 Arbeiten mit Dateien/Verzeichnissen;1082
5.5.1.1;22.1.1 Verzeichnisinformationen auflisten;1082
5.5.1.2;22.1.2 Unterverzeichnisse auflisten;1085
5.5.1.3;22.1.3 Verzeichnisse erstellen/löschen;1086
5.5.1.4;22.1.4 Dateien auflisten;1088
5.5.1.5;22.1.5 Dateien erstellen/schreiben/lesen;1090
5.5.1.6;22.1.6 Dateien kopieren/umbenennen/löschen;1094
5.5.1.7;22.1.7 Verwenden der Dateipicker;1095
5.5.1.8;22.1.8 StorageFile-/StorageFolder-Objekte speichern;1100
5.5.1.9;22.1.9 Verwenden der Most Recently Used-Liste;1102
5.5.2;22.2 Datenaustausch zwischen Apps/Programmen;1103
5.5.2.1;22.2.1 Zwischenablage;1103
5.5.2.2;22.2.2 Teilen von Inhalten;1110
5.5.2.3;22.2.3 Eine App als Freigabeziel verwenden;1114
5.5.2.4;22.2.4 Zugriff auf die Kontaktliste;1115
5.5.3;22.3 Spezielle Oberflächenelemente;1116
5.5.3.1;22.3.1 MessageDialog;1117
5.5.3.2;22.3.2 ContentDialog;1120
5.5.3.3;22.3.3 Popup-Benachrichtigungen;1122
5.5.3.4;22.3.4 PopUp/Flyouts;1130
5.5.3.5;22.3.5 Das PopupMenu einsetzen;1133
5.5.3.6;22.3.6 Eine AppBar/CommandBar verwenden;1134
5.5.4;22.4 Datenbanken und Windows Store Apps;1138
5.5.4.1;22.4.1 Der Retter in der Not: SQLite!;1138
5.5.4.2;22.4.2 Verwendung/Kurzüberblick;1139
5.5.4.3;22.4.3 Installation;1140
5.5.4.4;22.4.4 Wie kommen wir zu einer neuen Datenbank?;1141
5.5.4.5;22.4.5 Wie werden die Daten manipuliert?;1145
5.5.5;22.5 Vertrieb der App;1147
5.5.5.1;22.5.1 Verpacken der App;1147
5.5.5.2;22.5.2 App-Installation per Skript;1149
5.5.6;22.6 Ein Blick auf die App-Schwachstellen;1150
5.5.6.1;22.6.1 Quellcodes im Installationsverzeichnis;1150
5.5.6.2;22.6.2 Zugriff auf den App-Datenordner;1152
5.5.7;22.7 Praxisbeispiele;1153
5.5.7.1;22.7.1 Ein Verzeichnis auf Änderungen überwachen;1153
5.5.7.2;22.7.2 Eine App als Freigabeziel verwenden;1155
5.5.7.3;22.7.3 ToastNotifications einfach erzeugen;1160
6;Anhang;1166
6.1;A Glossar;1168
6.2;B Wichtige Dateiextensions;1174
7;Index;1176
8;Download-Kapitel;30