Doberenz / Gewinnus | Visual Basic 2015 – Grundlagen, Profiwissen und Rezepte | E-Book | sack.de
E-Book

E-Book, Deutsch, 1195 Seiten

Doberenz / Gewinnus Visual Basic 2015 – Grundlagen, Profiwissen und Rezepte

E-Book, Deutsch, 1195 Seiten

ISBN: 978-3-446-44605-2
Verlag: Carl Hanser
Format: PDF
Kopierschutz: 1 - PDF Watermark



VISUAL BASIC 2015 – GRUNDLAGEN, PROFIWISSEN, REZEPTE //- Für Einsteiger, Fortgeschrittene und Profis- Übungs- und Nachschlagewerk mit genialen Rezepten zu jedem Thema- EXTRA: 700 Seiten Bonuskapitel zur GUI-Entwicklung mit WPF und Windows Forms- Im Internet: Bonuskapitel sowie alle Beispiele aus dem BuchDieser Klassiker der Visual Basic-/.NET-Programmierung bietet Ihnen Informationen und Rezepte, nach denen Sie anderswo vergeblich suchen. Einsteiger erhalten ein umfangreiches Praktikum zu den Grundlagen der .NET-Programmierung mit Visual Basic 2015, dem Profi liefert es fortgeschrittene Programmiertechniken zu allen wesentlichen Einsatzgebieten der Windowsprogrammierung. Zum sofortigen Ausprobieren finden Sie am Ende eines jeden Kapitels hochwertige Lösungen für nahezu jedes Problem.Mit diesem Buch haben Sie den idealen Begleiter für Ihre tägliche Arbeit und zugleich – dank der erfrischenden und unterhaltsamen Sprache – eine durchaus spannende Lektüre auch für die Zeit nach der Arbeit.Die Themenkomplexe im Buch:Teil I: Grundlagen der Programmierung mit Visual Basic 2015Teil II: TechnologienTeil III: Windows AppsDie Themenkomplexe im Internet:Teil IV: WPF-AnwendungenTeil V: Windows FormsAUS DEM INHALT // Grundlagen der Sprache // OOP-Konzepte // Einführung in LINQ // Dateien & Dateisystem // XML-Dateien // Asynchrone Programmierung & Task Parallel Library // Fehlersuche und Behandlung // Datenbankzugriff mit ADO.NET // Verteilen von Anwendungen // App-Oberflächen entwerfen // Apps im Detail // GUI-Entwicklung mit WPF und Windows Forms
Doberenz / Gewinnus Visual Basic 2015 – Grundlagen, Profiwissen und Rezepte jetzt bestellen!

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


Ihre Fragen, Wünsche oder Anmerkungen
Vorname*
Nachname*
Ihre E-Mail-Adresse*
Kundennr.
Ihre Nachricht*
Lediglich mit * gekennzeichnete Felder sind Pflichtfelder.
Wenn Sie die im Kontaktformular eingegebenen Daten durch Klick auf den nachfolgenden Button übersenden, erklären Sie sich damit einverstanden, dass wir Ihr Angaben für die Beantwortung Ihrer Anfrage verwenden. Selbstverständlich werden Ihre Daten vertraulich behandelt und nicht an Dritte weitergegeben. Sie können der Verwendung Ihrer Daten jederzeit widersprechen. Das Datenhandling bei Sack Fachmedien erklären wir Ihnen in unserer Datenschutzerklärung.