E-Book, Deutsch, 1195 Seiten
ISBN: 978-3-446-44605-2
Verlag: Carl Hanser
Format: PDF
Kopierschutz: 1 - PDF Watermark
Autoren/Hrsg.
Fachgebiete
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 VB-Programm;54
3.1.2.1;1.2.1 Vorbereitungen;54
3.1.2.2;1.2.2 Programm 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;59
3.1.3.2;1.3.2 Objekt- und ereignisorientierte Programmierung;59
3.1.3.3;1.3.3 Windows-Programmierung unter Visual Studio 2015;60
3.1.4;1.4 Die Entwicklungsumgebung Visual Studio 2015;62
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;65
3.1.5.1;1.5.1 Zur Geschichte von .NET;65
3.1.5.2;1.5.2 .NET-Features und Begriffe;67
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 VB-Sprachfeatures;75
3.1.6.3;1.6.3 Code-Editor;75
3.1.6.4;1.6.4 NET Framework 4.6;76
3.1.7;1.7 Praxisbeispiele;76
3.1.7.1;1.7.1 Windows-Anwendung für Einsteiger;76
3.1.7.2;1.7.2 Windows-Anwendung für fortgeschrittene Einsteiger;80
3.2;2 Einführung in Visual Basic;88
3.2.1;2.1 Grundbegriffe;88
3.2.1.1;2.1.1 Anweisungen;88
3.2.1.2;2.1.2 Bezeichner;89
3.2.1.3;2.1.3 Kommentare;90
3.2.1.4;2.1.4 Zeilenumbruch;91
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;94
3.2.2.4;2.2.4 Deklaration von Variablen;95
3.2.2.5;2.2.5 Typinferenz;98
3.2.2.6;2.2.6 Konstanten deklarieren;98
3.2.2.7;2.2.7 Gültigkeitsbereiche von Deklarationen;99
3.2.2.8;2.2.8 Lokale Variablen mit Dim;99
3.2.2.9;2.2.9 Lokale Variablen mit Static;100
3.2.2.10;2.2.10 Private globale Variablen;100
3.2.2.11;2.2.11 Public Variablen;101
3.2.3;2.3 Wichtige Datentypen im Überblick;101
3.2.3.1;2.3.1 Byte, Short, Integer, Long;101
3.2.3.2;2.3.2 Single, Double und Decimal;102
3.2.3.3;2.3.3 Char und String;102
3.2.3.4;2.3.4 Date;103
3.2.3.5;2.3.5 Boolean;104
3.2.3.6;2.3.6 Object;104
3.2.4;2.4 Konvertieren von Datentypen;105
3.2.4.1;2.4.1 Implizite und explizite Konvertierung;105
3.2.4.2;2.4.2 Welcher Datentyp passt zu welchem?;106
3.2.4.3;2.4.3 Konvertierungsfunktionen;107
3.2.4.4;2.4.4 CType-Funktion;108
3.2.4.5;2.4.5 Konvertieren von Strings;108
3.2.4.6;2.4.6 Die Convert-Klasse;110
3.2.4.7;2.4.7 Die Parse-Methode;110
3.2.4.8;2.4.8 Boxing und Unboxing;111
3.2.4.9;2.4.9 TryCast-Operator;112
3.2.4.10;2.4.10 Nullable Types;112
3.2.5;2.5 Operatoren;113
3.2.5.1;2.5.1 Arithmetische Operatoren;113
3.2.5.2;2.5.2 Zuweisungsoperatoren;114
3.2.5.3;2.5.3 Logische Operatoren;115
3.2.5.4;2.5.4 Vergleichsoperatoren;116
3.2.5.5;2.5.5 Rangfolge der Operatoren;116
3.2.6;2.6 Kontrollstrukturen;117
3.2.6.1;2.6.1 Verzweigungsbefehle;117
3.2.6.2;2.6.2 Schleifenanweisungen;120
3.2.7;2.7 Benutzerdefinierte Datentypen;121
3.2.7.1;2.7.1 Enumerationen;121
3.2.7.2;2.7.2 Strukturen;122
3.2.8;2.8 Nutzerdefinierte Funktionen/Prozeduren;125
3.2.8.1;2.8.1 Deklaration und Syntax;125
3.2.8.2;2.8.2 Parameterübergabe allgemein;127
3.2.8.3;2.8.3 Übergabe mit ByVal und ByRef;128
3.2.8.4;2.8.4 Optionale Parameter;129
3.2.8.5;2.8.5 Überladene Funktionen/Prozeduren;129
3.2.9;2.9 Praxisbeispiele;130
3.2.9.1;2.9.1 Vom PAP zum Konsolen-Programm;130
3.2.9.2;2.9.2 Vom Konsolen- zum Windows-Programm;132
3.2.9.3;2.9.3 Schleifenanweisungen kennen lernen;134
3.2.9.4;2.9.4 Methoden überladen;137
3.2.9.5;2.9.5 Eine Iterationsschleife verstehen;139
3.2.9.6;2.9.6 Anwendungen von C# nach Visual Basic portieren;142
3.3;3 OOP-Konzepte;150
3.3.1;3.1 Strukturierter versus objektorientierter Entwurf;150
3.3.1.1;3.1.1 Was bedeutet strukturierte Programmierung?;150
3.3.1.2;3.1.2 Was heißt objektorientierte Programmierung?;151
3.3.2;3.2 Grundbegriffe der OOP;152
3.3.2.1;3.2.1 Objekt, Klasse, Instanz;152
3.3.2.2;3.2.2 Kapselung und Wiederverwendbarkeit;153
3.3.2.3;3.2.3 Vererbung und Polymorphie;153
3.3.2.4;3.2.4 Sichtbarkeit von Klassen und ihren Mitgliedern;154
3.3.2.5;3.2.5 Allgemeiner Aufbau einer Klasse;155
3.3.3;3.3 Ein Objekt erzeugen;156
3.3.3.1;3.3.1 Referenzieren und Instanziieren;157
3.3.3.2;3.3.2 Klassische Initialisierung;158
3.3.3.3;3.3.3 Objekt-Initialisierer;158
3.3.3.4;3.3.4 Arbeiten mit dem Objekt;158
3.3.3.5;3.3.5 Zerstören des Objekts;159
3.3.4;3.4 OOP-Einführungsbeispiel;159
3.3.4.1;3.4.1 Vorbereitungen;159
3.3.4.2;3.4.2 Klasse definieren;160
3.3.4.3;3.4.3 Objekt erzeugen und initialisieren;161
3.3.4.4;3.4.4 Objekt verwenden;161
3.3.4.5;3.4.5 Unterstützung durch die IntelliSense;161
3.3.4.6;3.4.6 Objekt testen;162
3.3.4.7;3.4.7 Warum unsere Klasse noch nicht optimal ist;163
3.3.5;3.5 Eigenschaften;163
3.3.5.1;3.5.1 Eigenschaften kapseln;163
3.3.5.2;3.5.2 Eigenschaften mit Zugriffsmethoden kapseln;166
3.3.5.3;3.5.3 Lese-/Schreibschutz für Eigenschaften;167
3.3.5.4;3.5.4 Statische Eigenschaften;168
3.3.5.5;3.5.5 Selbst implementierende Eigenschaften;169
3.3.6;3.6 Methoden;170
3.3.6.1;3.6.1 Öffentliche und private Methoden;170
3.3.6.2;3.6.2 Überladene Methoden;171
3.3.6.3;3.6.3 Statische Methoden;172
3.3.7;3.7 Ereignisse;173
3.3.7.1;3.7.1 Ereignise deklarieren;173
3.3.7.2;3.7.2 Ereignis auslösen;174
3.3.7.3;3.7.3 Ereignis auswerten;174
3.3.7.4;3.7.4 Benutzerdefinierte Ereignisse (Custom Events);176
3.3.8;3.8 Arbeiten mit Konstruktor und Destruktor;179
3.3.8.1;3.8.1 Der Konstruktor erzeugt das Objekt;179
3.3.8.2;3.8.2 Bequemer geht’s mit einem Objekt-Initialisierer;181
3.3.8.3;3.8.3 Destruktor und Garbage Collector räumen auf;182
3.3.8.4;3.8.4 Mit Using den Lebenszyklus des Objekts kapseln;184
3.3.9;3.9 Vererbung und Polymorphie;185
3.3.9.1;3.9.1 Vererbungsbeziehungen im Klassendiagramm;185
3.3.9.2;3.9.2 Überschreiben von Methoden (Method-Overriding);187
3.3.9.3;3.9.3 Klassen implementieren;187
3.3.9.4;3.9.4 Objekte implementieren;192
3.3.9.5;3.9.5 Ausblenden von Mitgliedern durch Vererbung;193
3.3.9.6;3.9.6 Allgemeine Hinweise und Regeln zur Vererbung;195
3.3.9.7;3.9.7 Polymorphe Methoden;196
3.3.10;3.10 Besondere Klassen und Features;198
3.3.10.1;3.10.1 Abstrakte Klassen;198
3.3.10.2;3.10.2 Abstrakte Methoden;199
3.3.10.3;3.10.3 Versiegelte Klassen;199
3.3.10.4;3.10.4 Partielle Klassen;200
3.3.10.5;3.10.5 Die Basisklasse System.Object;202
3.3.10.6;3.10.6 Property-Accessors;203
3.3.10.7;3.10.7 Nullbedingter Operator;203
3.3.11;3.11 Schnittstellen (Interfaces);204
3.3.11.1;3.11.1 Definition einer Schnittstelle;204
3.3.11.2;3.11.2 Implementieren einer Schnittstelle;205
3.3.11.3;3.11.3 Abfragen, ob eine Schnittstelle vorhanden ist;206
3.3.11.4;3.11.4 Mehrere Schnittstellen implementieren;206
3.3.11.5;3.11.5 Schnittstellenprogrammierung ist ein weites Feld;206
3.3.12;3.12 Praxisbeispiele;207
3.3.12.1;3.12.1 Eigenschaften sinnvoll kapseln;207
3.3.12.2;3.12.2 Eine statische Klasse anwenden;210
3.3.12.3;3.12.3 Vom fetten zum dünnen Client;212
3.3.12.4;3.12.4 Schnittstellenvererbung verstehen;221
3.3.12.5;3.12.5 Aggregation und Vererbung gegenüberstellen;225
3.3.12.6;3.12.6 Eine Klasse zur Matrizenrechnung entwickeln;231
3.3.12.7;3.12.7 Rechner für komplexe Zahlen;237
3.3.12.8;3.12.8 Formel-Rechner mit dem CodeDOM;245
3.3.12.9;3.12.9 Einen Funktionsverlauf grafisch darstellen;250
3.3.12.10;3.12.10 Sortieren mit IComparable/IComparer;254
3.3.12.11;3.12.11 Objektbäume in generischen Listen abspeichern;259
3.3.12.12;3.12.12 OOP beim Kartenspiel erlernen;265
3.4;4 Arrays, Strings, Funktionen;270
3.4.1;4.1 Datenfelder (Arrays);270
3.4.1.1;4.1.1 Ein Array deklarieren;270
3.4.1.2;4.1.2 Zugriff auf Array-Elemente;271
3.4.1.3;4.1.3 Oberen Index ermitteln;271
3.4.1.4;4.1.4 Explizite Arraygrenzen;271
3.4.1.5;4.1.5 Arrays erzeugen und initialisieren;271
3.4.1.6;4.1.6 Zugriff mittels Schleife;272
3.4.1.7;4.1.7 Mehrdimensionale Arrays;273
3.4.1.8;4.1.8 Dynamische Arrays;274
3.4.1.9;4.1.9 Zuweisen von Arrays;275
3.4.1.10;4.1.10 Arrays aus Strukturvariablen;276
3.4.1.11;4.1.11 Löschen von Arrays;277
3.4.1.12;4.1.12 Eigenschaften und Methoden von Arrays;277
3.4.1.13;4.1.13 Übergabe von Arrays;280
3.4.2;4.2 Zeichenkettenverarbeitung;281
3.4.2.1;4.2.1 Strings zuweisen;281
3.4.2.2;4.2.2 Eigenschaften und Methoden eines Strings;281
3.4.2.3;4.2.3 Kopieren eines Strings in ein Char-Array;284
3.4.2.4;4.2.4 Wichtige (statische) Methoden der String-Klasse;284
3.4.2.5;4.2.5 Die StringBuilder-Klasse;286
3.4.3;4.3 Reguläre Ausdrücke;289
3.4.3.1;4.3.1 Wozu braucht man reguläre Ausdrücke?;289
3.4.3.2;4.3.2 Eine kleine Einführung;290
3.4.3.3;4.3.3 Wichtige Methoden der Klasse Regex;290
3.4.3.4;4.3.4 Kompilierte reguläre Ausdrücke;292
3.4.3.5;4.3.5 RegexOptions-Enumeration;293
3.4.3.6;4.3.6 Metazeichen (Escape-Zeichen);294
3.4.3.7;4.3.7 Zeichenmengen (Character Sets);295
3.4.3.8;4.3.8 Quantifizierer;296
3.4.3.9;4.3.9 Zero-Width Assertions;297
3.4.3.10;4.3.10 Gruppen;301
3.4.3.11;4.3.11 Text ersetzen;301
3.4.3.12;4.3.12 Text splitten;302
3.4.4;4.4 Datums- und Zeitberechnungen;303
3.4.4.1;4.4.1 Grundlegendes;303
3.4.4.2;4.4.2 Wichtige Eigenschaften von DateTime-Variablen;304
3.4.4.3;4.4.3 Wichtige Methoden von DateTime-Variablen;305
3.4.4.4;4.4.4 Wichtige Mitglieder der DateTime-Struktur;306
3.4.4.5;4.4.5 Konvertieren von Datumstrings in DateTime-Werte;307
3.4.4.6;4.4.6 Die TimeSpan-Struktur;307
3.4.5;4.5 Vordefinierten Funktionen;309
3.4.5.1;4.5.1 Mathematik;309
3.4.5.2;4.5.2 Datums- und Zeitfunktionen;311
3.4.6;4.6 Zahlen formatieren;313
3.4.6.1;4.6.1 Die ToString-Methode;314
3.4.6.2;4.6.2 Die Format-Methode;315
3.4.6.3;4.6.3 Stringinterpolation;317
3.4.7;4.7 Praxisbeispiele;317
3.4.7.1;4.7.1 Zeichenketten verarbeiten;317
3.4.7.2;4.7.2 Zeichenketten mittels StringBuilder addieren;320
3.4.7.3;4.7.3 Reguläre Ausdrücke testen;324
3.4.7.4;4.7.4 Fehler bei mathematischen Operationen behandeln;326
3.4.7.5;4.7.5 Methodenaufrufe mit Array-Parametern;329
3.4.7.6;4.7.6 String in Array kopieren und umgekehrt;332
3.4.7.7;4.7.7 Ein Byte-Array in einen String konvertieren;334
3.4.7.8;4.7.8 Strukturvariablen in Arrays einsetzen;336
3.5;5 Weitere Sprachfeatures;340
3.5.1;5.1 Namespaces (Namensräume);340
3.5.1.1;5.1.1 Ein kleiner Überblick;340
3.5.1.2;5.1.2 Die Imports-Anweisung;342
3.5.1.3;5.1.3 Namespace-Alias;342
3.5.1.4;5.1.4 Namespaces in Projekteigenschaften;343
3.5.1.5;5.1.5 Namespace Alias Qualifizierer;344
3.5.1.6;5.1.6 Eigene Namespaces einrichten;344
3.5.2;5.2 Überladen von Operatoren;345
3.5.2.1;5.2.1 Syntaxregeln;345
3.5.2.2;5.2.2 Praktische Anwendung;346
3.5.2.3;5.2.3 Konvertierungsoperatoren überladen;347
3.5.3;5.3 Auflistungen (Collections);348
3.5.3.1;5.3.1 Beziehungen zwischen den Schnittstellen;348
3.5.3.2;5.3.2 IEnumerable;349
3.5.3.3;5.3.3 ICollection;350
3.5.3.4;5.3.4 IList;350
3.5.3.5;5.3.5 Iteratoren;350
3.5.3.6;5.3.6 Die ArrayList-Collection;351
3.5.3.7;5.3.7 Die Hashtable;352
3.5.4;5.4 Generische Datentypen;353
3.5.4.1;5.4.1 Wie es früher einmal war;353
3.5.4.2;5.4.2 Typsicherheit durch Generics;355
3.5.4.3;5.4.3 List-Collection ersetzt ArrayList;356
3.5.4.4;5.4.4 Über die Vorzüge generischer Collections;357
3.5.4.5;5.4.5 Typbeschränkungen durch Constraints;358
3.5.4.6;5.4.6 Collection-Initialisierer;359
3.5.4.7;5.4.7 Generische Methoden;359
3.5.5;5.5 Delegates;360
3.5.5.1;5.5.1 Delegates sind Methodenzeiger;360
3.5.5.2;5.5.2 Delegate-Typ definieren;361
3.5.5.3;5.5.3 Delegate-Objekt erzeugen;362
3.5.5.4;5.5.4 Delegates vereinfacht instanziieren;362
3.5.5.5;5.5.5 Relaxed Delegates;363
3.5.5.6;5.5.6 Anonyme Methoden;363
3.5.5.7;5.5.7 Lambda-Ausdrücke;364
3.5.5.8;5.5.8 Lambda-Ausdrücke in der Task Parallel Library;365
3.5.6;5.6 Dynamische Programmierung;367
3.5.6.1;5.6.1 Wozu dynamische Programmierung?;367
3.5.6.2;5.6.2 Das Prinzip der dynamischen Programmierung;367
3.5.6.3;5.6.3 Kovarianz und Kontravarianz;371
3.5.7;5.7 Weitere Datentypen;372
3.5.7.1;5.7.1 BigInteger;372
3.5.7.2;5.7.2 Complex;374
3.5.7.3;5.7.3 Tuple(Of T);375
3.5.7.4;5.7.4 SortedSet(Of T);375
3.5.8;5.8 Praxisbeispiele;377
3.5.8.1;5.8.1 ArrayList versus generische List;377
3.5.8.2;5.8.2 Delegates und Lambda Expressions;380
3.5.8.3;5.8.3 Mit dynamischem Objekt eine Datei durchsuchen;383
3.6;6 Einführung in LINQ;388
3.6.1;6.1 LINQ-Grundlagen;388
3.6.1.1;6.1.1 Die LINQ-Architektur;388
3.6.1.2;6.1.2 LINQ-Implementierungen;389
3.6.1.3;6.1.3 Anonyme Typen;389
3.6.1.4;6.1.4 Erweiterungsmethoden;391
3.6.2;6.2 Abfragen mit LINQ to Objects;392
3.6.2.1;6.2.1 Grundlegendes zur LINQ-Syntax;392
3.6.2.2;6.2.2 Zwei alternative Schreibweisen von LINQ-Abfragen;393
3.6.2.3;6.2.3 Übersicht der wichtigsten Abfrage-Operatoren;395
3.6.3;6.3 LINQ-Abfragen im Detail;396
3.6.3.1;6.3.1 Die Projektionsoperatoren Select und SelectMany;397
3.6.3.2;6.3.2 Der Restriktionsoperator Where;399
3.6.3.3;6.3.3 Die Sortierungsoperatoren OrderBy und ThenBy;399
3.6.3.4;6.3.4 Der Gruppierungsoperator GroupBy;401
3.6.3.5;6.3.5 Verknüpfen mit Join;402
3.6.3.6;6.3.6 Aggregat-Operatoren;403
3.6.3.7;6.3.7 Verzögertes Ausführen von LINQ-Abfragen;405
3.6.3.8;6.3.8 Konvertierungsmethoden;406
3.6.3.9;6.3.9 Abfragen mit PLINQ;406
3.6.4;6.4 Praxisbeispiele;409
3.6.4.1;6.4.1 Die Syntax von LINQ-Abfragen verstehen;409
3.6.4.2;6.4.2 Aggregat-Abfragen mit LINQ;412
3.6.4.3;6.4.3 LINQ im Schnelldurchgang erlernen;414
3.6.4.4;6.4.4 Strings mit LINQ abfragen und filtern;417
3.6.4.5;6.4.5 Duplikate aus einer Liste oder einem Array entfernen;418
3.6.4.6;6.4.6 Arrays mit LINQ initialisieren;421
3.6.4.7;6.4.7 Arrays per LINQ mit Zufallszahlen füllen;423
3.6.4.8;6.4.8 Einen String mit Wiederholmuster erzeugen;424
3.6.4.9;6.4.9 Mit LINQ Zahlen und Strings sortieren;426
3.6.4.10;6.4.10 Mit LINQ Collections von Objekten sortieren;427
3.6.4.11;6.4.11 Ergebnisse von LINQ-Abfragen in ein Array kopieren;429
4;Teil II: Technologien;430
4.1;7 Zugriff auf das Dateisystem;432
4.1.1;7.1 Grundlagen;432
4.1.1.1;7.1.1 Klassen für Verzeichnis- und Dateioperationen;433
4.1.1.2;7.1.2 Statische versus Instanzen-Klasse;433
4.1.2;7.2 Übersichten;434
4.1.2.1;7.2.1 Methoden der Directory-Klasse;434
4.1.2.2;7.2.2 Methoden eines DirectoryInfo-Objekts;435
4.1.2.3;7.2.3 Eigenschaften eines DirectoryInfo-Objekts;435
4.1.2.4;7.2.4 Methoden der File-Klasse;435
4.1.2.5;7.2.5 Methoden eines FileInfo-Objekts;436
4.1.2.6;7.2.6 Eigenschaften eines FileInfo-Objekts;437
4.1.3;7.3 Operationen auf Verzeichnisebene;437
4.1.3.1;7.3.1 Existenz eines Verzeichnisses/einer Datei feststellen;437
4.1.3.2;7.3.2 Verzeichnisse erzeugen und löschen;438
4.1.3.3;7.3.3 Verzeichnisse verschieben und umbenennen;439
4.1.3.4;7.3.4 Aktuelles Verzeichnis bestimmen;439
4.1.3.5;7.3.5 Unterverzeichnisse ermitteln;439
4.1.3.6;7.3.6 Alle Laufwerke ermitteln;440
4.1.3.7;7.3.7 Dateien kopieren und verschieben;441
4.1.3.8;7.3.8 Dateien umbenennen;442
4.1.3.9;7.3.9 Dateiattribute feststellen;442
4.1.3.10;7.3.10 Verzeichnis einer Datei ermitteln;444
4.1.3.11;7.3.11 Alle im Verzeichnis enthaltene Dateien ermitteln;444
4.1.3.12;7.3.12 Dateien und Unterverzeichnisse ermitteln;444
4.1.4;7.4 Zugriffsberechtigungen;445
4.1.4.1;7.4.1 ACL und ACE;445
4.1.4.2;7.4.2 SetAccessControl-Methode;446
4.1.4.3;7.4.3 Zugriffsrechte anzeigen;446
4.1.5;7.5 Weitere wichtige Klassen;447
4.1.5.1;7.5.1 Die Path-Klasse;447
4.1.5.2;7.5.2 Die Klasse FileSystemWatcher;448
4.1.6;7.6 Datei- und Verzeichnisdialoge;450
4.1.6.1;7.6.1 OpenFileDialog und SaveFileDialog;450
4.1.6.2;7.6.2 FolderBrowserDialog;452
4.1.7;7.7 Praxisbeispiele;453
4.1.7.1;7.7.1 Infos über Verzeichnisse und Dateien gewinnen;453
4.1.7.2;7.7.2 Die Verzeichnisstruktur in eine TreeView einlesen;456
4.1.7.3;7.7.3 Mit LINQ und RegEx Verzeichnisbäume durchsuchen;458
4.2;8 Dateien lesen und schreiben;464
4.2.1;8.1 Grundprinzip der Datenpersistenz;464
4.2.1.1;8.1.1 Dateien und Streams;464
4.2.1.2;8.1.2 Die wichtigsten Klassen;465
4.2.1.3;8.1.3 Erzeugen eines Streams;466
4.2.2;8.2 Dateiparameter;466
4.2.2.1;8.2.1 FileAccess;466
4.2.2.2;8.2.2 FileMode;466
4.2.2.3;8.2.3 FileShare;467
4.2.3;8.3 Textdateien;467
4.2.3.1;8.3.1 Eine Textdatei beschreiben bzw. neu anlegen;467
4.2.3.2;8.3.2 Eine Textdatei lesen;469
4.2.4;8.4 Binärdateien;471
4.2.4.1;8.4.1 Lese-/Schreibzugriff;471
4.2.4.2;8.4.2 Die Methoden ReadAllBytes und WriteAllBytes;471
4.2.4.3;8.4.3 BinaryReader/BinaryWriter erzeugen;472
4.2.5;8.5 Sequenzielle Dateien;472
4.2.5.1;8.5.1 Lesen und Schreiben von strukturierten Daten;472
4.2.5.2;8.5.2 Serialisieren von Objekten;473
4.2.6;8.6 Dateien verschlüsseln und komprimieren;474
4.2.6.1;8.6.1 Das Methodenpärchen Encrypt-/Decrypt;475
4.2.6.2;8.6.2 Verschlüsseln unter Windows Vista/7/8/10;475
4.2.6.3;8.6.3 Verschlüsseln mit der CryptoStream-Klasse;476
4.2.6.4;8.6.4 Dateien komprimieren;477
4.2.7;8.7 Memory Mapped Files;478
4.2.7.1;8.7.1 Grundprinzip;478
4.2.7.2;8.7.2 Erzeugen eines MMF;479
4.2.7.3;8.7.3 Erstellen eines Map View;479
4.2.8;8.8 Praxisbeispiele;480
4.2.8.1;8.8.1 Auf eine Textdatei zugreifen;480
4.2.8.2;8.8.2 Einen Objektbaum speichern;484
4.2.8.3;8.8.3 Ein Memory Mapped File (MMF) verwenden;491
4.2.8.4;8.8.4 Hex-Dezimal-Bytes-Konverter;493
4.2.8.5;8.8.5 Eine Datei verschlüsseln;497
4.2.8.6;8.8.6 Eine Datei komprimieren;500
4.2.8.7;8.8.7 Echte ZIP-Dateien erstellen;502
4.2.8.8;8.8.8 PDFs erstellen/exportieren;503
4.2.8.9;8.8.9 Eine CSV-Datei erstellen;507
4.2.8.10;8.8.10 Eine CSV-Datei mit LINQ lesen und auswerten;510
4.2.8.11;8.8.11 Einen korrekten Dateinamen erzeugen;512
4.3;9 Asynchrone Programmierung;514
4.3.1;9.1 Übersicht;514
4.3.1.1;9.1.1 Multitasking versus Multithreading;515
4.3.1.2;9.1.2 Deadlocks;516
4.3.1.3;9.1.3 Racing;516
4.3.2;9.2 Programmieren mit Threads;518
4.3.2.1;9.2.1 Einführungsbeispiel;518
4.3.2.2;9.2.2 Wichtige Thread-Methoden;519
4.3.2.3;9.2.3 Wichtige Thread-Eigenschaften;521
4.3.2.4;9.2.4 Einsatz der ThreadPool-Klasse;522
4.3.3;9.3 Sperrmechanismen;524
4.3.3.1;9.3.1 Threading ohne SyncLock;524
4.3.3.2;9.3.2 Threading mit SyncLock;525
4.3.3.3;9.3.3 Die Monitor-Klasse;528
4.3.3.4;9.3.4 Mutex;531
4.3.3.5;9.3.5 Methoden für die parallele Ausführung sperren;532
4.3.3.6;9.3.6 Semaphore;533
4.3.4;9.4 Interaktion mit der Programmoberfläche;534
4.3.4.1;9.4.1 Die Werkzeuge;535
4.3.4.2;9.4.2 Einzelne Steuerelemente mit Invoke aktualisieren;535
4.3.4.3;9.4.3 Mehrere Steuerelemente aktualisieren;536
4.3.4.4;9.4.4 Ist ein Invoke-Aufruf nötig?;537
4.3.4.5;9.4.5 Und was ist mit WPF?;537
4.3.5;9.5 Timer-Threads;539
4.3.6;9.6 Die BackgroundWorker-Komponente;540
4.3.7;9.7 Asynchrone Programmier-Entwurfsmuster;543
4.3.7.1;9.7.1 Kurzübersicht;543
4.3.7.2;9.7.2 Polling;544
4.3.7.3;9.7.3 Callback verwenden;545
4.3.7.4;9.7.4 Callback mit Parameterübergabe verwenden;546
4.3.7.5;9.7.5 Callback mit Zugriff auf die Programm-Oberfläche;547
4.3.8;9.8 Asynchroner Aufruf beliebiger Methoden;548
4.3.8.1;9.8.1 Die Beispielklasse;548
4.3.8.2;9.8.2 Asynchroner Aufruf ohne Callback;550
4.3.8.3;9.8.3 Asynchroner Aufruf mit Callback und Anzeigefunktion;550
4.3.8.4;9.8.4 Aufruf mit Rückgabewerten (per Eigenschaft);551
4.3.8.5;9.8.5 Aufruf mit Rückgabewerten (per EndInvoke);552
4.3.9;9.9 Es geht auch einfacher – Async und Await;553
4.3.9.1;9.9.1 Der Weg von synchron zu asynchron;553
4.3.9.2;9.9.2 Achtung: Fehlerquellen!;555
4.3.9.3;9.9.3 Eigene asynchrone Methoden entwickeln;557
4.3.10;9.10 Praxisbeispiele;559
4.3.10.1;9.10.1 Spieltrieb & Multithreading erleben;559
4.3.10.2;9.10.2 Prozess- und Thread-Informationen gewinnen;571
4.3.10.3;9.10.3 Ein externes Programm starten;576
4.4;10 Die Task Parallel Library;580
4.4.1;10.1 Überblick;580
4.4.1.1;10.1.1 Parallel-Programmierung;580
4.4.1.2;10.1.2 Möglichkeiten der TPL;583
4.4.1.3;10.1.3 Der CLR-Threadpool;583
4.4.2;10.2 Parallele Verarbeitung mit Parallel.Invoke;584
4.4.2.1;10.2.1 Aufrufvarianten;585
4.4.2.2;10.2.2 Einschränkungen;586
4.4.3;10.3 Verwendung von Parallel.For;586
4.4.3.1;10.3.1 Abbrechen der Verarbeitung;588
4.4.3.2;10.3.2 Auswerten des Verarbeitungsstatus;589
4.4.3.3;10.3.3 Und was ist mit anderen Iterator-Schrittweiten?;589
4.4.4;10.4 Collections mit Parallel.ForEach verarbeiten;590
4.4.5;10.5 Die Task-Klasse;591
4.4.5.1;10.5.1 Einen Task erzeugen;591
4.4.5.2;10.5.2 Task starten;592
4.4.5.3;10.5.3 Datenübergabe an den Task;593
4.4.5.4;10.5.4 Wie warte ich auf das Taskende?;594
4.4.5.5;10.5.5 Tasks mit Rückgabewerten;596
4.4.5.6;10.5.6 Die Verarbeitung abbrechen;599
4.4.5.7;10.5.7 Fehlerbehandlung;603
4.4.5.8;10.5.8 Weitere Eigenschaften;603
4.4.6;10.6 Zugriff auf das Userinterface;605
4.4.6.1;10.6.1 Task-Ende und Zugriff auf die Oberfläche;605
4.4.6.2;10.6.2 Zugriff auf das UI aus dem Task heraus;606
4.4.7;10.7 Weitere Datenstrukturen im Überblick;608
4.4.7.1;10.7.1 Threadsichere Collections;608
4.4.7.2;10.7.2 Primitive für die Threadsynchronisation;609
4.4.8;10.8 Parallel LINQ (PLINQ);609
4.4.9;10.9 Praxisbeispiel: Spieltrieb – Version 2;610
4.4.9.1;10.9.1 Aufgabenstellung;610
4.4.9.2;10.9.2 Global-Klasse;610
4.4.9.3;10.9.3 Controller;611
4.4.9.4;10.9.4 LKWs;613
4.4.9.5;10.9.5 Schiff-Klasse;614
4.4.9.6;10.9.6 Oberfläche;616
4.5;11 Fehlersuche und Behandlung;618
4.5.1;11.1 Der Debugger;618
4.5.1.1;11.1.1 Allgemeine Beschreibung;618
4.5.1.2;11.1.2 Die wichtigsten Fenster;619
4.5.1.3;11.1.3 Debugging-Optionen;622
4.5.1.4;11.1.4 Praktisches Debugging am Beispiel;624
4.5.2;11.2 Arbeiten mit Debug und Trace;628
4.5.2.1;11.2.1 Wichtige Methoden von Debug und Trace;628
4.5.2.2;11.2.2 Besonderheiten der Trace-Klasse;631
4.5.2.3;11.2.3 TraceListener-Objekte;632
4.5.3;11.3 Caller Information;635
4.5.3.1;11.3.1 Attribute;635
4.5.3.2;11.3.2 Anwendung;635
4.5.4;11.4 Fehlerbehandlung;636
4.5.4.1;11.4.1 Anweisungen zur Fehlerbehandlung;636
4.5.4.2;11.4.2 Try-Catch;636
4.5.4.3;11.4.3 Try-Finally;641
4.5.4.4;11.4.4 Das Standardverhalten bei Ausnahmen festlegen;643
4.5.4.5;11.4.5 Die Exception-Klasse;644
4.5.4.6;11.4.6 Fehler/Ausnahmen auslösen;644
4.5.4.7;11.4.7 Eigene Fehlerklassen;645
4.5.4.8;11.4.8 Exceptionhandling zur Entwurfszeit;647
4.5.4.9;11.4.9 Code Contracts;647
4.6;12 XML in Theorie und Praxis;650
4.6.1;12.1 XML – etwas Theorie;650
4.6.1.1;12.1.1 Übersicht;650
4.6.1.2;12.1.2 Der XML-Grundaufbau;653
4.6.1.3;12.1.3 Wohlgeformte Dokumente;654
4.6.1.4;12.1.4 Processing Instructions (PI);657
4.6.1.5;12.1.5 Elemente und Attribute;657
4.6.1.6;12.1.6 Verwendbare Zeichensätze;659
4.6.2;12.2 XSD-Schemas;661
4.6.2.1;12.2.1 XSD-Schemas und ADO.NET;661
4.6.2.2;12.2.2 XML-Schemas in Visual Studio analysieren;663
4.6.2.3;12.2.3 XML-Datei mit XSD-Schema erzeugen;666
4.6.2.4;12.2.4 XSD-Schema aus einer XML-Datei erzeugen;667
4.6.3;12.3 XML-Integration in Visual Basic;668
4.6.3.1;12.3.1 XML-Literale;668
4.6.3.2;12.3.2 Einfaches Navigieren durch späte Bindung;671
4.6.3.3;12.3.3 Die LINQ to XML-API;673
4.6.3.4;12.3.4 Neue XML-Dokumente erzeugen;674
4.6.3.5;12.3.5 Laden und Sichern von XML-Dokumenten;676
4.6.3.6;12.3.6 Navigieren in XML-Daten;678
4.6.3.7;12.3.7 Auswählen und Filtern;680
4.6.3.8;12.3.8 Manipulieren der XML-Daten;680
4.6.3.9;12.3.9 XML-Dokumente transformieren;682
4.6.4;12.4 Verwendung des DOM unter .NET;685
4.6.4.1;12.4.1 Übersicht;685
4.6.4.2;12.4.2 DOM-Integration in Visual Basic;686
4.6.4.3;12.4.3 Laden von Dokumenten;686
4.6.4.4;12.4.4 Erzeugen von XML-Dokumenten;687
4.6.4.5;12.4.5 Auslesen von XML-Dateien;689
4.6.4.6;12.4.6 Direktzugriff auf einzelne Elemente;690
4.6.4.7;12.4.7 Einfügen von Informationen;691
4.6.4.8;12.4.8 Suchen in den Baumzweigen;693
4.6.5;12.5 Weitere Möglichkeiten der XML-Verarbeitung;697
4.6.5.1;12.5.1 Die relationale Sicht mit XmlDataDocument;697
4.6.5.2;12.5.2 XML-Daten aus Objektstrukturen erzeugen;700
4.6.5.3;12.5.3 Schnelles Suchen in XML-Daten mit XPathNavigator;703
4.6.5.4;12.5.4 Schnelles Auslesen von XML-Daten mit XmlReader;706
4.6.5.5;12.5.5 Erzeugen von XML-Daten mit XmlWriter;708
4.6.5.6;12.5.6 XML transformieren mit XSLT;710
4.6.6;12.6 Praxisbeispiele;712
4.6.6.1;12.6.1 Mit dem DOM in XML-Dokumenten navigieren;712
4.6.6.2;12.6.2 XML-Daten in eine TreeView einlesen;715
4.6.6.3;12.6.3 DataSets in XML-Strings konvertieren;719
4.6.6.4;12.6.4 In Dokumenten mit dem XPathNavigator navigieren;723
4.7;13 Einführung in ADO.NET;728
4.7.1;13.1 Eine kleine Übersicht;728
4.7.1.1;13.1.1 Die ADO.NET-Klassenhierarchie;728
4.7.1.2;13.1.2 Die Klassen der Datenprovider;729
4.7.1.3;13.1.3 Das Zusammenspiel der ADO.NET-Klassen;732
4.7.2;13.2 Das Connection-Objekt;733
4.7.2.1;13.2.1 Allgemeiner Aufbau;733
4.7.2.2;13.2.2 OleDbConnection;733
4.7.2.3;13.2.3 Schließen einer Verbindung;735
4.7.2.4;13.2.4 Eigenschaften des Connection-Objekts;735
4.7.2.5;13.2.5 Methoden des Connection-Objekts;737
4.7.2.6;13.2.6 Der ConnectionStringBuilder;738
4.7.3;13.3 Das Command-Objekt;739
4.7.3.1;13.3.1 Erzeugen und Anwenden eines Command-Objekts;739
4.7.3.2;13.3.2 Erzeugen mittels CreateCommand-Methode;740
4.7.3.3;13.3.3 Eigenschaften des Command-Objekts;740
4.7.3.4;13.3.4 Methoden des Command-Objekts;742
4.7.3.5;13.3.5 Freigabe von Connection- und Command-Objekten;743
4.7.4;13.4 Parameter-Objekte;745
4.7.4.1;13.4.1 Erzeugen und Anwenden eines Parameter-Objekts;745
4.7.4.2;13.4.2 Eigenschaften des Parameter-Objekts;745
4.7.5;13.5 Das CommandBuilder-Objekt;746
4.7.5.1;13.5.1 Erzeugen;746
4.7.5.2;13.5.2 Anwenden;747
4.7.6;13.6 Das DataReader-Objekt;747
4.7.6.1;13.6.1 DataReader erzeugen;748
4.7.6.2;13.6.2 Daten lesen;748
4.7.6.3;13.6.3 Eigenschaften des DataReaders;749
4.7.6.4;13.6.4 Methoden des DataReaders;749
4.7.7;13.7 Das DataAdapter-Objekt;750
4.7.7.1;13.7.1 DataAdapter erzeugen;750
4.7.7.2;13.7.2 Command-Eigenschaften;751
4.7.7.3;13.7.3 Fill-Methode;752
4.7.7.4;13.7.4 Update-Methode;753
4.7.8;13.8 Praxisbeispiele;754
4.7.8.1;13.8.1 Wichtige ADO.NET-Objekte im Einsatz;754
4.7.8.2;13.8.2 Eine Aktionsabfrage ausführen;756
4.7.8.3;13.8.3 Eine Auswahlabfrage aufrufen;758
4.7.8.4;13.8.4 Die Datenbank aktualisieren;760
4.7.8.5;13.8.5 Den ConnectionString speichern;763
4.8;14 Das DataSet;766
4.8.1;14.1 Grundlegende Features des DataSets;766
4.8.1.1;14.1.1 Die Objekthierarchie;767
4.8.1.2;14.1.2 Die wichtigsten Klassen;767
4.8.1.3;14.1.3 Erzeugen eines DataSets;768
4.8.2;14.2 Das DataTable-Objekt;770
4.8.2.1;14.2.1 DataTable erzeugen;770
4.8.2.2;14.2.2 Spalten hinzufügen;770
4.8.2.3;14.2.3 Zeilen zur DataTable hinzufügen;771
4.8.2.4;14.2.4 Auf den Inhalt einer DataTable zugreifen;772
4.8.3;14.3 Die DataView;774
4.8.3.1;14.3.1 Erzeugen eines DataView;774
4.8.3.2;14.3.2 Sortieren und Filtern von Datensätzen;774
4.8.3.3;14.3.3 Suchen von Datensätzen;775
4.8.4;14.4 Typisierte DataSets;775
4.8.4.1;14.4.1 Ein typisiertes DataSet erzeugen;776
4.8.4.2;14.4.2 Das Konzept der Datenquellen;777
4.8.4.3;14.4.3 Typisierte DataSets und TableAdapter;778
4.8.5;14.5 Die Qual der Wahl;779
4.8.5.1;14.5.1 DataReader – der schnelle Lesezugriff;780
4.8.5.2;14.5.2 DataSet – die Datenbank im Hauptspeicher;780
4.8.5.3;14.5.3 Objektrelationales Mapping – die Zukunft?;781
4.8.6;14.6 Praxisbeispiele;782
4.8.6.1;14.6.1 Im DataView sortieren und filtern;782
4.8.6.2;14.6.2 Suche nach Datensätzen;784
4.8.6.3;14.6.3 Ein DataSet in einen XML-String serialisieren;785
4.8.6.4;14.6.4 Untypisierte in typisierte DataSets konvertieren;790
4.8.6.5;14.6.5 Eine LINQ to SQL-Abfrage ausführen;795
4.9;15 Verteilen von Anwendungen;800
4.9.1;15.1 ClickOnce-Deployment;801
4.9.1.1;15.1.1 Übersicht/Einschränkungen;801
4.9.1.2;15.1.2 Die Vorgehensweise;802
4.9.1.3;15.1.3 Ort der Veröffentlichung;802
4.9.1.4;15.1.4 Anwendungsdateien;803
4.9.1.5;15.1.5 Erforderliche Komponenten;803
4.9.1.6;15.1.6 Aktualisierungen;804
4.9.1.7;15.1.7 Veröffentlichungsoptionen;805
4.9.1.8;15.1.8 Veröffentlichen;806
4.9.1.9;15.1.9 Verzeichnisstruktur;806
4.9.1.10;15.1.10 Der Webpublishing-Assistent;808
4.9.1.11;15.1.11 Neue Versionen erstellen;809
4.9.2;15.2 InstallShield;809
4.9.2.1;15.2.1 Installation;809
4.9.2.2;15.2.2 Aktivieren;810
4.9.2.3;15.2.3 Ein neues Setup-Projekt;810
4.9.2.4;15.2.4 Finaler Test;818
4.9.3;15.3 Hilfedateien programmieren;818
4.9.3.1;15.3.1 Der HTML Help Workshop;819
4.9.3.2;15.3.2 Bedienung am Beispiel;820
4.9.3.3;15.3.3 Hilfedateien in die VB-Anwendung einbinden;822
4.9.3.4;15.3.4 Eine alternative Hilfe-IDE verwenden;826
4.10;16 Weitere Techniken;828
4.10.1;16.1 Zugriff auf die Zwischenablage;828
4.10.1.1;16.1.1 Das Clipboard-Objekt;828
4.10.1.2;16.1.2 Zwischenablage-Funktionen für Textboxen;830
4.10.2;16.2 Arbeiten mit der Registry;830
4.10.2.1;16.2.1 Allgemeines;831
4.10.2.2;16.2.2 Registry-Unterstützung in .NET;832
4.10.3;16.3 .NET-Reflection;834
4.10.3.1;16.3.1 Übersicht;834
4.10.3.2;16.3.2 Assembly laden;834
4.10.3.3;16.3.3 Mittels GetType und Type Informationen sammeln;835
4.10.3.4;16.3.4 Dynamisches Laden von Assemblies;837
4.10.4;16.4 Praxisbeispiele;839
4.10.4.1;16.4.1 Zugriff auf die Registry;839
4.10.4.2;16.4.2 Dateiverknüpfungen erzeugen;841
4.10.4.3;16.4.3 Die Zwischenablage überwachen und anzeigen;843
4.10.4.4;16.4.4 Die WIA-Library kennenlernen;846
4.10.4.5;16.4.5 Auf eine Webcam zugreifen;858
4.10.4.6;16.4.6 Auf den Scanner zugreifen;860
4.10.4.7;16.4.7 OpenOffice.org Writer per OLE steuern;864
4.10.4.8;16.4.8 Nutzer und Gruppen des Systems ermitteln;872
4.10.4.9;16.4.9 Testen, ob Nutzer in einer Gruppe enthalten ist;873
4.10.4.10;16.4.10 Testen, ob der Nutzer ein Administrator ist;875
4.10.4.11;16.4.11 Die IP-Adressen des Computers bestimmen;876
4.10.4.12;16.4.12 Die IP-Adresse über den Hostnamen bestimmen;877
4.10.4.13;16.4.13 Diverse Systeminformationen ermitteln;878
4.10.4.14;16.4.14 Sound per MCI aufnehmen;887
4.10.4.15;16.4.15 Mikrofonpegel anzeigen;890
4.10.4.16;16.4.16 Pegeldiagramm aufzeichnen;892
4.10.4.17;16.4.17 Sound-und Video-Dateien per MCI abspielen;896
4.11;17 Konsolenanwendungen;904
4.11.1;17.1 Grundaufbau/Konzepte;904
4.11.1.1;17.1.1 Unser Hauptprogramm – Module1.vb;905
4.11.1.2;17.1.2 Rückgabe eines Fehlerstatus;906
4.11.1.3;17.1.3 Parameterübergabe;907
4.11.1.4;17.1.4 Zugriff auf die Umgebungsvariablen;908
4.11.2;17.2 Die Kommandozentrale: System.Console;909
4.11.2.1;17.2.1 Eigenschaften;909
4.11.2.2;17.2.2 Methoden/Ereignisse;910
4.11.2.3;17.2.3 Textausgaben;911
4.11.2.4;17.2.4 Farbangaben;912
4.11.2.5;17.2.5 Tastaturabfragen;913
4.11.2.6;17.2.6 Arbeiten mit Streamdaten;914
4.11.3;17.3 Praxisbeispiel: Farbige Konsolenanwendung;915
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 Store 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;969
5.2.5.1;19.5.1 Seitennavigation und Parameterübergabe;969
5.2.5.2;19.5.2 Die Fensterkopfzeile anpassen;971
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;985
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;997
5.3.3;20.3 Listendarstellungen;999
5.3.3.1;20.3.1 ComboBox, ListBox;999
5.3.3.2;20.3.2 ListView;1003
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;1010
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;1021
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.vb;1039
5.4.1.3;21.1.3 Verweise;1041
5.4.1.4;21.1.4 App.xaml und App.xaml.vb;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.vb;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;1053
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?;1060
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;1065
5.4.3.8;21.3.8 Daten in der Cloud ablegen/laden (Roaming);1067
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;1087
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;1096
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;1113
5.5.2.4;22.2.4 Zugriff auf die Kontaktliste;1114
5.5.3;22.3 Spezielle Oberflächenelemente;1116
5.5.3.1;22.3.1 MessageDialog;1116
5.5.3.2;22.3.2 ContentDialog;1119
5.5.3.3;22.3.3 Popup-Benachrichtigungen;1121
5.5.3.4;22.3.4 PopUp/Flyouts;1128
5.5.3.5;22.3.5 Das PopupMenu einsetzen;1132
5.5.3.6;22.3.6 Eine AppBar 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;1138
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;1146
5.5.5.1;22.5.1 Verpacken der App;1146
5.5.5.2;22.5.2 App-Installation per Skript;1148
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;1152
5.5.7.1;22.7.1 Ein Verzeichnis auf Änderungen überwachen;1152
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