Sie sind hier
E-Book

Visual Basic 2012 - Grundlagen und Profiwissen

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

Kaufen Sie hier:

Horizontale Tabs

Blick ins Buch
Inhaltsverzeichnis
Visual Basic 2012 - Grundlagen und Profiwissen4
Vorwort54
Zum Buchinhalt54
Zu den Neuigkeiten in Visual Studio 201255
Weitere Bücher von uns56
Zu den Codebeispielen56
Nobody is perfect57
1 Einstieg in Visual Studio 201260
1.1 Die Installation von Visual Studio 201260
1.1.1 Überblick über die Produktpalette60
Visual Studio 2012 Express60
Visual Studio 2012 Professional61
Visual Studio 2012 Premium62
Visual Studio 2012 Ultimate62
1.1.2 Anforderungen an Hard- und Software62
1.2 Unser allererstes VB-Programm63
1.2.1 Vorbereitungen63
Compilerpfad eintragen63
1.2.2 Programm schreiben65
1.2.3 Programm kompilieren und testen66
1.2.4 Einige Erläuterungen zum Quellcode66
Befehlszeilen66
Imports-Anweisung66
Module-Anweisung67
WriteLine- und ReadLine-Methoden67
Assemblierung67
1.2.5 Konsolenanwendungen sind langweilig67
1.3 Die Windows-Philosophie68
1.3.1 Mensch-Rechner-Dialog68
1.3.2 Objekt- und ereignisorientierte Programmierung68
Objekte (Objects)69
Eigenschaften (Properties)69
Methoden (Methods)69
Ereignisse (Events)69
1.3.3 Windows-Programmierung unter Visual Studio 201270
1.4 Die Entwicklungsumgebung Visual Studio 201271
1.4.1 Der Startdialog71
1.4.2 Die wichtigsten Fenster72
Der Projektmappen-Explorer73
Der Designer74
Der Werkzeugkasten74
Das Eigenschaften-Fenster74
Das Codefenster74
1.5 Microsofts .NET-Technologie75
1.5.1 Zur Geschichte von .NET75
Vom alten VB zu VB.NET75
Wie funktioniert eine .NET-Sprache?76
1.5.2 .NET-Features und Begriffe77
.NET-Framework77
Die Common Language Specification (CLS)78
Das Common Type System (CTS)79
Die Common Language Runtime (CLR)79
Namespaces ersetzen Registry80
Assemblierungen81
Zugriff auf COM-Komponenten81
Metadaten und Reflexion81
Attribute82
Serialisierung83
Multithreading83
Objektorientierte Programmierung pur84
1.6 Wichtige Neuigkeiten in Visual Studio 201284
1.6.1 Die neue Visual Studio 2012-Entwicklungsumgebung84
Neues Outfit der Toolbar84
Veränderter Projektmappen-Explorer85
Registerkartenverwaltung der geöffneten Dateien86
Neuer Verweis Manager-Dialog86
ByVal kann weggelassen werden86
Suchen überall87
Projekt-Kompatibilität87
Neue Projekttypen87
Multi-Monitor -Unterstützung87
Zusätzliche Tools und Features87
1.6.2 Neuheiten im .NET Framework 4.588
WinRT-Anwendungen88
Portable Klassenbibliotheken88
Parallele Computervorgänge88
Internet89
WPF89
WCF89
1.6.3 VB 2012 – Sprache und Compiler89
Asynchrone Methoden89
Caller Information90
Iteratoren90
1.7 Praxisbeispiele90
1.7.1 Windows-Anwendung für Einsteiger90
1. Etappe: Visueller Entwurf der Bedienoberfläche90
2. Etappe: Zuweisen der Objekteigenschaften91
3. Etappe: Verknüpfen der Objekte mit Ereignissen92
4. Etappe: Programm kompilieren und testen93
Bemerkungen93
1.7.2 Windows-Anwendung für fortgeschrittene Einsteiger94
1. Etappe: Visueller Entwurf der Bedienoberfläche94
2. Etappe: Zuweisen der Objekteigenschaften95
3. Etappe: Verknüpfen der Objekte mit Ereignissen96
4. Etappe: Programm kompilieren und testen98
IntelliSense – die hilfreiche Fee99
Fehlersuche100
2 Einführung in Visual Basic102
2.1 Grundbegriffe102
2.1.1 Anweisungen102
2.1.2 Bezeichner103
Namensgebung und Schlüsselwörter103
Leerzeichen etc.104
Groß-/Kleinschreibung104
2.1.3 Kommentare104
2.1.4 Zeilenumbruch105
Lange Zeilen teilen105
Implizite Zeilenfortsetzung105
Mehrere Anweisungen pro Zeile106
2.2 Datentypen, Variablen und Konstanten107
2.2.1 Fundamentale Typen107
2.2.2 Wertetypen versus Verweistypen108
Wertetypen108
Verweistypen108
2.2.3 Benennung von Variablen108
2.2.4 Deklaration von Variablen109
Dim-Anweisung109
Mehrfachdeklaration109
Anfangswerte110
Option Explicit110
Option Strict111
2.2.5 Typinferenz112
2.2.6 Konstanten deklarieren112
2.2.7 Gültigkeitsbereiche von Deklarationen113
2.2.8 Lokale Variablen mit Dim113
2.2.9 Lokale Variablen mit Static114
2.2.10 Private globale Variablen114
2.2.11 Public Variablen115
2.3 Wichtige Datentypen im Überblick115
2.3.1 Byte, Short, Integer, Long115
2.3.2 Single, Double und Decimal116
2.3.3 Char und String116
2.3.4 Date117
2.3.5 Boolean118
2.3.6 Object118
2.4 Konvertieren von Datentypen119
2.4.1 Implizite und explizite Konvertierung119
2.4.2 Welcher Datentyp passt zu welchem?120
2.4.3 Konvertierungsfunktionen121
2.4.4 CType-Funktion122
2.4.5 Konvertieren von Strings122
ToString-Methode122
String in Zahl verwandeln122
EVA-Prinzip123
2.4.6 Die Convert-Klasse124
2.4.7 Die Parse-Methode124
2.4.8 Boxing und Unboxing125
Boxing125
Unboxing125
2.4.9 TryCast-Operator126
2.4.10 Nullable Types126
2.5 Operatoren127
2.5.1 Arithmetische Operatoren127
2.5.2 Zuweisungsoperatoren128
2.5.3 Logische Operatoren129
2.5.4 Vergleichsoperatoren130
2.5.5 Rangfolge der Operatoren130
2.6 Kontrollstrukturen131
2.6.1 Verzweigungsbefehle131
2.6.2 Schleifenanweisungen134
For-Next-Schleifen134
Do-Loop-Schleifen135
2.7 Benutzerdefinierte Datentypen135
2.7.1 Enumerationen135
2.7.2 Strukturen136
Deklaration137
Datenzugriff137
With-Anweisung138
Bemerkungen138
2.8 Nutzerdefinierte Funktionen/Prozeduren139
2.8.1 Deklaration und Syntax139
Function139
Sub140
2.8.2 Parameterübergabe allgemein141
Signatur der Parameterliste141
Benannte Parameter141
2.8.3 Übergabe mit ByVal und ByRef142
ByVal142
ByRef142
2.8.4 Optionale Parameter143
2.8.5 Überladene Funktionen/Prozeduren143
2.9 Praxisbeispiele144
2.9.1 Vom PAP zum Konsolen-Programm144
Programmablaufplan145
Programmierung145
Kompilieren146
Test146
2.9.2 Vom Konsolen- zum Windows-Programm146
Oberfläche147
Quelltext147
Test148
Bemerkungen148
2.9.3 Schleifenanweisungen kennen lernen148
Oberfläche148
Quellcode148
Test150
2.9.4 Methoden überladen151
Oberfläche151
Quellcode151
Test153
2.9.5 Eine Iterationsschleife verstehen153
Programmablaufplan154
Oberfläche154
Quellcode154
Test155
Ergänzung156
3 OOP-Konzepte158
3.1 Strukturierter versus objektorientierter Entwurf158
3.1.1 Was bedeutet strukturierte Programmierung?158
3.1.2 Was heißt objektorientierte Programmierung?159
3.2 Grundbegriffe der OOP160
3.2.1 Objekt, Klasse, Instanz160
3.2.2 Kapselung und Wiederverwendbarkeit161
3.2.3 Vererbung und Polymorphie161
3.2.4 Sichtbarkeit von Klassen und ihren Mitgliedern162
Klassen162
Klassenmitglieder162
3.2.5 Allgemeiner Aufbau einer Klasse163
3.3 Ein Objekt erzeugen164
3.3.1 Referenzieren und Instanziieren165
3.3.2 Klassische Initialisierung166
3.3.3 Objekt-Initialisierer166
3.3.4 Arbeiten mit dem Objekt166
3.3.5 Zerstören des Objekts167
3.4 OOP-Einführungsbeispiel167
3.4.1 Vorbereitungen167
3.4.2 Klasse definieren168
Bemerkungen169
3.4.3 Objekt erzeugen und initialisieren169
3.4.4 Objekt verwenden169
3.4.5 IntelliSense – die hilfreiche Fee169
3.4.6 Objekt testen170
3.4.7 Warum unsere Klasse noch nicht optimal ist171
3.5 Eigenschaften171
3.5.1 Eigenschaften kapseln171
Deklarieren von Eigenschaften172
Zugriff173
Bemerkung173
3.5.2 Eigenschaften mit Zugriffsmethoden kapseln174
3.5.3 Lese-/Schreibschutz für Eigenschaften175
3.5.4 Statische Eigenschaften176
3.5.5 Selbst implementierende Eigenschaften177
3.6 Methoden178
3.6.1 Öffentliche und private Methoden178
3.6.2 Überladene Methoden179
3.6.3 Statische Methoden179
3.7 Ereignisse181
3.7.1 Ereignise deklarieren181
3.7.2 Ereignis auslösen181
3.7.3 Ereignis auswerten182
3.7.4 Benutzerdefinierte Ereignisse (Custom Events)183
Deklaration184
Anwendung185
3.8 Arbeiten mit Konstruktor und Destruktor187
3.8.1 Der Konstruktor erzeugt das Objekt187
Deklaration187
Aufruf188
3.8.2 Bequemer geht’s mit einem Objekt-Initialisierer189
3.8.3 Destruktor und Garbage Collector räumen auf189
3.8.4 Mit Using den Lebenszyklus des Objekts kapseln192
3.9 Vererbung und Polymorphie192
3.9.1 Vererbungsbeziehungen im Klassendiagramm193
3.9.2 Überschreiben von Methoden (Method-Overriding)194
3.9.3 Klassen implementieren194
Basisklasse CKunde194
Subklassen195
Subklasse CPrivatKunde197
Subklasse CFirmenKunde198
Testoberfläche199
3.9.4 Objekte implementieren199
Praxistest200
3.9.5 Ausblenden von Mitgliedern durch Vererbung201
3.9.6 Allgemeine Hinweise und Regeln zur Vererbung202
3.9.7 Polymorphe Methoden203
Praxistest205
3.10 Besondere Klassen und Features205
3.10.1 Abstrakte Klassen205
3.10.2 Abstrakte Methoden206
3.10.3 Versiegelte Klassen207
3.10.4 Partielle Klassen207
3.10.5 Die Basisklasse System.Object209
3.10.6 Property-Accessors210
3.11 Schnittstellen (Interfaces)210
3.11.1 Definition einer Schnittstelle211
3.11.2 Implementieren einer Schnittstelle211
3.11.3 Abfragen, ob eine Schnittstelle vorhanden ist212
3.11.4 Mehrere Schnittstellen implementieren213
3.11.5 Schnittstellenprogrammierung ist ein weites Feld213
3.12 Praxisbeispiele213
3.12.1 Eigenschaften sinnvoll kapseln213
Oberfläche214
Quellcode CKreis214
Quellcode Form1215
Test216
Objektinitialisierer216
3.12.2 Eine statische Klasse anwenden217
Oberfläche217
Quellcode CKugel217
Quellcode Form1217
Test218
3.12.3 Vom fetten zum dünnen Client218
Oberfläche219
Quellcode (Fat Client)219
Test222
Bemerkungen zum fetten Client222
Abmagerungskur für den fetten Client223
Quellcode für CRegister224
Quellcode für CRechenmodul225
Quellcode für Form1227
Test228
Bemerkungen228
3.12.4 Schnittstellenvererbung verstehen228
Klassendiagramme229
Oberfläche Form1229
Quellcode CPerson229
Quellcode CKunde230
Quellcode Form1230
Test231
Quellcode IPerson231
Quellcode CKunde232
3.12.5 Aggregation und Vererbung gegenüberstellen232
Bedienoberfläche233
Variante 1: Klassen CPerson und CPersonen mit Aggregation234
Test237
Variante 2: Klasse CPersonen mit Vererbung238
Test238
3.12.6 Eine Klasse zur Matrizenrechnung entwickeln239
Quellcode der Klasse CMatrix239
Oberfläche241
Quellcode von Form1242
Test244
Bemerkung244
4 Arrays, Strings, Funktionen246
4.1 Datenfelder (Arrays)246
4.1.1 Ein Array deklarieren246
4.1.2 Zugriff auf Array-Elemente247
4.1.3 Oberen Index ermitteln247
4.1.4 Explizite Arraygrenzen247
4.1.5 Arrays erzeugen und initialisieren247
4.1.6 Zugriff mittels Schleife248
For Each-Schleife248
4.1.7 Mehrdimensionale Arrays249
Mehrdimensional initialisieren249
4.1.8 Dynamische Arrays250
ReDim-Anweisung250
Preserve-Option250
4.1.9 Zuweisen von Arrays251
4.1.10 Arrays aus Strukturvariablen252
4.1.11 Löschen von Arrays253
4.1.12 Eigenschaften und Methoden von Arrays253
Wichtige Instanzeneigenschaften und -methoden254
Array-Dimensionen bestimmen254
Arrays kopieren254
Wichtige (statische) Methoden der Array-Klasse255
Suchen in Arrays255
4.1.13 Übergabe von Arrays256
4.2 Zeichenkettenverarbeitung257
4.2.1 Strings zuweisen257
4.2.2 Eigenschaften und Methoden eines Strings257
Wichtige Instanzeneigenschaften und -methoden258
Einige Beispiele für Instanzeneigenschaften258
Einige Beispiele für Instanzenmethoden259
4.2.3 Kopieren eines Strings in ein Char-Array260
4.2.4 Wichtige (statische) Methoden der String-Klasse260
Stringvergleich261
Strings zerlegen und wieder zusammenbauen261
4.2.5 Die StringBuilder-Klasse262
Erzeugen263
Eigenschaften264
Methoden264
4.3 Reguläre Ausdrücke265
4.3.1 Wozu werden reguläre Ausdrücke verwendet?265
4.3.2 Eine kleine Einführung266
4.3.3 Wichtige Methoden der Klasse Regex266
Die Match-Methode267
Eigenschaften des Match-Objekts267
Die NextMatch-Methode267
Die Matches-Methode268
Der Alternator268
4.3.4 Kompilierte reguläre Ausdrücke268
4.3.5 RegexOptions-Enumeration269
4.3.6 Metazeichen (Escape-Zeichen)270
4.3.7 Zeichenmengen (Character Sets)271
4.3.8 Quantifizierer272
4.3.9 Zero-Width Assertions273
String- und Zeilengrenzen (^ und $)274
Wortgrenzen (b)274
Positiver Lookahead (?=expr)275
Negativer Lookahead (?!expr)276
Positiver (?<=expr) und negativer (?276
4.3.10 Gruppen277
4.3.11 Text ersetzen277
4.3.12 Text splitten278
Trennzeichen im Ergebnis278
4.4 Datums- und Zeitberechnungen279
4.4.1 Grundlegendes279
4.4.2 Wichtige Eigenschaften von DateTime-Variablen280
4.4.3 Wichtige Methoden von DateTime-Variablen281
4.4.4 Wichtige Mitglieder der DateTime-Struktur282
4.4.5 Konvertieren von Datumstrings in DateTime-Werte283
4.4.6 Die TimeSpan-Struktur283
4.5 Vordefinierten Funktionen285
4.5.1 Mathematik285
Zahlen runden285
Winkel umrechnen286
Wurzel- und Potenzoperationen286
Logarithmus und Exponentialfunktionen286
4.5.2 Datums- und Zeitfunktionen287
Wichtige Instanzeneigenschaften und -methoden287
Wichtige Klasseneigenschaften und -methoden289
4.6 Zahlen formatieren290
4.6.1 Die ToString-Methode290
Zahlenformatierungen291
Datumsformatierungen291
4.6.2 Die Format-Methode292
4.7 Praxisbeispiele293
4.7.1 Zeichenketten verarbeiten293
Oberfläche293
Quellcode294
Test295
Bemerkungen296
4.7.2 Zeichenketten mittels StringBuilder addieren296
Oberfläche296
Quellcode Klasse CTest297
Quellcode Form1298
Test299
Bemerkungen300
4.7.3 Reguläre Ausdrücke testen300
Oberfläche300
Quellcode301
Test301
Bemerkungen301
4.7.4 Methodenaufrufe mit Array-Parametern301
Oberfläche302
Quellcode302
Test304
Bemerkungen304
5 Weitere Sprachfeatures306
5.1 Namespaces (Namensräume)306
5.1.1 Ein kleiner Überblick306
5.1.2 Die Imports-Anweisung308
5.1.3 Namespace-Alias308
5.1.4 Namespaces in Projekteigenschaften309
5.1.5 Namespace Alias Qualifizierer309
5.1.6 Eigene Namespaces einrichten310
5.2 Überladen von Operatoren311
5.2.1 Syntaxregeln311
5.2.2 Praktische Anwendung312
Klasse CArray312
Klasse Form1312
5.2.3 Konvertierungsoperatoren überladen313
5.3 Auflistungen (Collections)314
5.3.1 Beziehungen zwischen den Schnittstellen314
5.3.2 IEnumerable314
5.3.3 ICollection315
5.3.4 IList316
5.3.5 Iteratoren316
5.3.6 Die ArrayList-Collection317
Weitere Eigenschaften und Methoden317
5.3.7 Die Hashtable318
5.4 Generische Datentypen319
5.4.1 Wie es früher einmal war319
Miserable Typsicherheit bei den alten Collections320
Eine eigene generische Collection-Klasse bedeutet viel Arbeit320
Warum uns auch ein Array nicht weiterhilft321
5.4.2 Typsicherheit durch Generics321
Einen einfachen generischen Typ deklarieren321
Generischen Typ verwenden322
5.4.3 List-Collection ersetzt ArrayList322
5.4.4 Über die Vorzüge generischer Collections323
5.4.5 Typbeschränkungen durch Constraints324
5.4.6 Collection-Initialisierer325
5.4.7 Generische Methoden325
5.5 Delegates326
5.5.1 Delegates sind Methodenzeiger326
5.5.2 Delegate-Typ definieren327
5.5.3 Delegate-Objekt erzeugen328
Mit dem Delegate-Objekt arbeiten328
5.5.4 Delegates vereinfacht instanziieren328
5.5.5 Relaxed Delegates329
5.5.6 Anonyme Methoden329
5.5.7 Lambda-Ausdrücke330
5.5.8 Lambda-Ausdrücke in der Task Parallel Library331
Bemerkungen332
5.6 Dynamische Programmierung333
5.6.1 Wozu dynamische Programmierung?333
5.6.2 Das Prinzip der dynamischen Programmierung334
Die Klasse DynamicObject334
Die Klasse ExpandoObject335
Late Binding337
5.6.3 Kovarianz und Kontravarianz337
5.7 Weitere Datentypen338
5.7.1 BigInteger338
5.7.2 Complex340
5.7.3 Tuple(Of T)341
5.7.4 SortedSet(Of T)342
5.8 Praxisbeispiele343
5.8.1 ArrayList versus generische List343
Oberfläche343
Quellcode (mit ArrayList)344
Quellcode (mit generischer List)345
Test345
Bemerkungen346
5.8.2 Delegates und Lambda Expressions346
Oberfläche347
Quellcode347
Test349
5.8.3 Mit dynamischem Objekt eine Datei durchsuchen349
Oberfläche349
Quellcode CDynFile349
Textdatei hinzufügen351
Quellcode Form1352
Test352
Bemerkungen353
6 Einführung in LINQ354
6.1 LINQ-Grundlagen354
6.1.1 Die LINQ-Architektur354
6.1.2 LINQ-Implementierungen355
6.1.3 Anonyme Typen355
6.1.4 Erweiterungsmethoden357
6.2 Abfragen mit LINQ to Objects358
6.2.1 Grundlegendes zur LINQ-Syntax358
6.2.2 Zwei alternative Schreibweisen von LINQ-Abfragen359
6.2.3 Übersicht der wichtigsten Abfrage-Operatoren361
Der Let-Zuweisungsoperator362
6.3 LINQ-Abfragen im Detail362
6.3.1 Die Projektionsoperatoren Select und SelectMany363
Select363
SelectMany364
6.3.2 Der Restriktionsoperator Where365
6.3.3 Die Sortierungsoperatoren OrderBy und ThenBy365
OrderBy/OrderByDescending365
ThenBy/ThenByDescending366
Reverse367
6.3.4 Der Gruppierungsoperator GroupBy367
6.3.5 Verknüpfen mit Join368
6.3.6 Aggregat-Operatoren369
Count369
Sum370
6.3.7 Verzögertes Ausführen von LINQ-Abfragen371
6.3.8 Konvertierungsmethoden372
6.3.9 Abfragen mit PLINQ372
Probleme mit der Sortierfolge374
6.4 Praxisbeispiele375
6.4.1 Die Syntax von LINQ-Abfragen verstehen375
Oberfläche376
Quellcode376
Test377
Bemerkungen378
6.4.2 Aggregat-Abfragen mit LINQ378
Oberfläche378
Quellcode378
Test380
Bemerkungen380
7 Zugriff auf das Dateisystem384
7.1 Grundlagen384
7.1.1 Klassen für Verzeichnis- und Dateioperationen385
Übersicht385
7.1.2 Statische versus Instanzen-Klasse385
7.2 Übersichten386
7.2.1 Methoden der Directory-Klasse386
7.2.2 Methoden eines DirectoryInfo-Objekts387
7.2.3 Eigenschaften eines DirectoryInfo-Objekts387
7.2.4 Methoden der File-Klasse387
7.2.5 Methoden eines FileInfo-Objekts388
7.2.6 Eigenschaften eines FileInfo-Objekts389
7.3 Operationen auf Verzeichnisebene389
7.3.1 Existenz eines Verzeichnisses/einer Datei feststellen389
7.3.2 Verzeichnisse erzeugen und löschen390
Mit Directory-Klasse390
Mit DirectoryInfo-Klasse390
7.3.3 Verzeichnisse verschieben und umbenennen391
7.3.4 Aktuelles Verzeichnis bestimmen391
7.3.5 Unterverzeichnisse ermitteln391
7.3.6 Alle Laufwerke ermitteln392
7.3.7 Dateien kopieren und verschieben393
7.3.8 Dateien umbenennen394
7.3.9 Dateiattribute feststellen394
Die FileAttribute-Enumeration395
7.3.10 Verzeichnis einer Datei ermitteln396
7.3.11 Alle im Verzeichnis enthaltene Dateien ermitteln396
7.3.12 Dateien und Unterverzeichnisse ermitteln396
7.4 Zugriffsberechtigungen397
7.4.1 ACL und ACE397
7.4.2 SetAccessControl-Methode398
7.4.3 Zugriffsrechte anzeigen398
7.5 Weitere wichtige Klassen399
7.5.1 Die Path-Klasse399
7.5.2 Die Klasse FileSystemWatcher400
7.6 Datei- und Verzeichnisdialoge402
7.6.1 OpenFileDialog und SaveFileDialog402
Anzeige und Auswertung402
Wichtige Eigenschaften403
Dateifilter403
7.6.2 FolderBrowserDialog403
Die SpecialFolder-Enumeration404
7.7 Praxisbeispiele405
7.7.1 Infos über Verzeichnisse und Dateien gewinnen405
Oberfläche405
Quelltext405
Test407
7.7.2 Die Verzeichnisstruktur in eine TreeView einlesen408
Oberfläche408
Quellcode408
Test409
7.7.3 Mit LINQ und RegEx Verzeichnisbäume durchsuchen410
Oberfläche410
Quellcode411
Test413
Bemerkungen414
8 Dateien lesen und schreiben416
8.1 Grundprinzip der Datenpersistenz416
8.1.1 Dateien und Streams416
8.1.2 Die wichtigsten Klassen417
8.1.3 Erzeugen eines Streams418
8.2 Dateiparameter418
8.2.1 FileAccess418
8.2.2 FileMode418
8.2.3 FileShare419
8.3 Textdateien419
8.3.1 Eine Textdatei beschreiben bzw. neu anlegen419
WriteAllLines/AppendAllText420
8.3.2 Eine Textdatei lesen421
ReadAllLines/ReadLines421
8.4 Binärdateien423
8.4.1 Lese-/Schreibzugriff423
8.4.2 Die Methoden ReadAllBytes und WriteAllBytes423
8.4.3 BinaryReader/BinaryWriter erzeugen424
8.5 Sequenzielle Dateien424
8.5.1 Lesen und Schreiben von strukturierten Daten424
8.5.2 Serialisieren von Objekten425
8.6 Dateien verschlüsseln und komprimieren426
8.6.1 Das Methodenpärchen Encrypt-/Decrypt427
8.6.2 Verschlüsseln unter Windows Vista/Windows 7/8427
8.6.3 Verschlüsseln mit der CryptoStream-Klasse428
8.6.4 Dateien komprimieren429
8.7 Memory Mapped Files430
8.7.1 Grundprinzip430
8.7.2 Erzeugen eines MMF431
CreateFromFile-Methode431
CreateNew-Methode431
8.7.3 Erstellen eines Map View431
8.8 Praxisbeispiele432
8.8.1 Auf eine Textdatei zugreifen432
Oberfläche433
Quellcode433
Test435
8.8.2 Einen Objektbaum speichern436
Klassendiagramm436
Klasse CBestellung437
Klasse CPerson438
Klasse CKunde438
Klasse CFirma438
Klasse CPersistent439
Form1440
Test441
Anzeige mit DataGridView442
8.8.3 Ein Memory Mapped File (MMF) verwenden442
Oberfläche443
Quellcode443
Test444
Bemerkungen444
9 Asynchrone Programmierung446
9.1 Übersicht447
9.1.1 Multitasking versus Multithreading447
9.1.2 Deadlocks448
9.1.3 Racing448
9.2 Programmieren mit Threads450
9.2.1 Einführungsbeispiel450
9.2.2 Wichtige Thread-Methoden451
9.2.3 Wichtige Thread-Eigenschaften453
9.2.4 Einsatz der ThreadPool-Klasse454
9.3 Sperrmechanismen456
9.3.1 Threading ohne SyncLock456
9.3.2 Threading mit SyncLock458
Ein anschauliches Beispiel459
9.3.3 Die Monitor-Klasse460
Wait und Pulse/PulseAll461
TryEnter463
9.3.4 Mutex463
9.3.5 Methoden für die parallele Ausführung sperren465
9.3.6 Semaphore465
9.4 Interaktion mit der Programmoberfläche467
9.4.1 Die Werkzeuge467
9.4.2 Einzelne Steuerelemente mit Invoke aktualisieren467
9.4.3 Mehrere Steuerelemente aktualisieren469
9.4.4 Ist ein Invoke-Aufruf nötig?469
9.4.5 Und was ist mit WPF?470
9.5 Timer-Threads471
9.6 Die BackgroundWorker-Komponente472
9.7 Asynchrone Programmier-Entwurfsmuster475
9.7.1 Kurzübersicht475
Begin...-Methode475
End...-Methode475
Die Rückrufmethode476
9.7.2 Polling476
9.7.3 Callback verwenden477
9.7.4 Callback mit Parameterübergabe verwenden478
9.7.5 Callback mit Zugriff auf die Programm-Oberfläche479
9.8 Asynchroner Aufruf beliebiger Methoden480
9.8.1 Die Beispielklasse480
9.8.2 Asynchroner Aufruf ohne Callback482
9.8.3 Asynchroner Aufruf mit Callback und Anzeigefunktion482
9.8.4 Aufruf mit Rückgabewerten (per Eigenschaft)483
9.8.5 Aufruf mit Rückgabewerten (per EndInvoke)484
9.9 Es geht auch einfacher – Async und Await485
9.9.1 Der Weg von synchron zu asynchron485
9.9.2 Achtung: Fehlerquellen!487
9.9.3 Eigene asynchrone Methoden entwickeln489
9.10 Praxisbeispiele491
9.10.1 Spieltrieb & Multithreading erleben491
Aufgabenstellung492
Oberfläche492
Quelltext LKW493
Quelltext Schiff496
Quelltext Controller498
Quelltext MyGlobal500
Quelltext Form1500
Test502
Bemerkungen503
9.10.2 Prozess- und Thread-Informationen gewinnen503
Oberfläche503
Quellcode503
Test507
9.10.3 Ein externes Programm starten508
Oberfläche508
Quelltext508
Test509
Ergänzungen509
Bemerkung510
10 Die Task Parallel Library512
10.1 Überblick512
10.1.1 Parallel-Programmierung512
10.1.2 Möglichkeiten der TPL515
10.1.3 Der CLR-Threadpool515
10.2 Parallele Verarbeitung mit Parallel.Invoke516
10.2.1 Aufrufvarianten517
10.2.2 Einschränkungen518
10.3 Verwendung von Parallel.For518
10.3.1 Abbrechen der Verarbeitung520
10.3.2 Auswerten des Verarbeitungsstatus521
10.3.3 Und was ist mit anderen Iterator-Schrittweiten?521
10.4 Collections mit Parallel.ForEach verarbeiten522
10.5 Die Task-Klasse523
10.5.1 Einen Task erzeugen523
10.5.2 Task starten524
10.5.3 Datenübergabe an den Task525
10.5.4 Wie warte ich auf das Taskende?526
10.5.5 Tasks mit Rückgabewerten528
10.5.6 Die Verarbeitung abbrechen531
Abbruch per Return531
Abbruch per CancellationToken532
10.5.7 Fehlerbehandlung535
10.5.8 Weitere Eigenschaften535
Task-Id535
Status536
IsCanceled, IsCompleted, IsFaulted536
TaskCreationOptions536
10.6 Zugriff auf das Userinterface537
10.6.1 Task-Ende und Zugriff auf die Oberfläche537
10.6.2 Zugriff auf das UI aus dem Task heraus538
10.7 Weitere Datenstrukturen im Überblick540
10.7.1 Threadsichere Collections540
10.7.2 Primitive für die Threadsynchronisation541
10.8 Parallel LINQ (PLINQ)541
10.9 Die Parallel Diagnostic Tools542
10.9.1 Fenster für parallele Aufgaben542
10.9.2 Fenster für parallele Stacks543
10.9.3 IntelliTrace544
10.10 Praxisbeispiel: Spieltrieb – Version 2544
10.10.1 Aufgabenstellung544
10.10.2 Global-Klasse545
10.10.3 Controller546
10.10.4 LKWs547
10.10.5 Schiff-Klasse549
10.10.6 Oberfläche551
11 Fehlersuche und Behandlung554
11.1 Der Debugger554
11.1.1 Allgemeine Beschreibung554
11.1.2 Die wichtigsten Fenster555
Befehlsfenster555
Direktfenster556
Lokal-Fenster556
Überwachungsfenster557
Autofenster557
Ausgabefenster557
11.1.3 Debugging-Optionen558
Einzelschritt-Modus559
Prozedurschritt-Modus559
Breakpoints559
11.1.4 Praktisches Debugging am Beispiel560
Haltepunkte setzen560
Abbruchbedingung setzen561
Trefferanzahl verwenden562
Einzelschritt-Modus562
Prozedurschritt563
Ausführen bis Rücksprung563
Auswerten von Ausdrücken563
11.2 Arbeiten mit Debug und Trace564
11.2.1 Wichtige Methoden von Debug und Trace564
Write, WriteLine, WriteIf und WriteLineIf564
IndentLevel, Indent, IndentSize und UnIndent566
Assert566
Fail567
11.2.2 Besonderheiten der Trace-Klasse567
11.2.3 TraceListener-Objekte568
TextWriterTraceListener568
App.config zur Definition verwenden569
EventLogTraceListener570
11.3 Caller Information571
11.3.1 Attribute571
11.3.2 Anwendung571
11.4 Fehlerbehandlung572
11.4.1 Anweisungen zur Fehlerbehandlung572
11.4.2 Try-Catch572
Ausnahmen über Fehlerklassen auswerten573
Spezifische Fehlerklassen auswerten574
Fehler erneut auslösen575
11.4.3 Try-Finally577
11.4.4 Das Standardverhalten bei Ausnahmen festlegen579
11.4.5 Die Exception-Klasse580
11.4.6 Fehler/Ausnahmen auslösen580
11.4.7 Eigene Fehlerklassen581
11.4.8 Exceptionhandling zur Entwurfszeit583
11.4.9 Code Contracts583
12 Einführung in WPF588
Und was ist mit Silverlight?589
12.1 Neues aus der Gerüchteküche589
12.1.1 Silverlight589
12.1.2 WPF589
12.2 Einführung590
12.2.1 Was kann eine WPF-Anwendung?590
12.2.2 Die eXtensible Application Markup Language592
Eine erste XAML-Anwendung593
Probleme mit dem Stammelement594
Ein kleines Experiment595
Soll ich das alles von Hand eintippen?596
12.2.3 Verbinden von XAML und Basic-Code596
Application.xaml596
Application.xaml.vb597
MainWindow.xaml598
MainWindow.xaml.vb599
Ein erster Ereignis-Handler599
Und wo ist mein Button-Objekt?600
Brauche ich unbedingt eine Trennung von Code und XAML?601
Kann ich Oberflächen auch per Code erzeugen?601
12.2.4 Zielplattformen602
12.2.5 Applikationstypen602
WPF-Anwendung602
WPF-Browseranwendungen603
12.2.6 Vorteile und Nachteile von WPF-Anwendungen603
12.2.7 Weitere Dateien im Überblick604
Was sind .BAML-Dateien und was passiert damit?604
Worum handelt es sich bei den .G.VB-Dateien?605
12.3 Alles beginnt mit dem Layout607
12.3.1 Allgemeines zum Layout607
12.3.2 Positionieren von Steuerelementen609
Was sind das überhaupt für Maßangaben?609
Top/Left/Width/Height610
MinWidth/MaxWidth/MinHeight/MaxHeight610
Margin/Padding611
HorizontalAlignment/VerticalAlignment612
12.3.3 Canvas612
12.3.4 StackPanel613
12.3.5 DockPanel615
12.3.6 WrapPanel617
12.3.7 UniformGrid617
12.3.8 Grid619
Definition des Grundlayouts619
Zuordnen von Kind-Elementen621
Verwendung des GridSplitters623
12.3.9 ViewBox623
12.3.10 TextBlock624
Textformatierungen626
Besonderheit von Leerzeichen/Zeilenumbrüchen626
Textausrichtung627
12.4 Das WPF-Programm627
12.4.1 Die Application-Klasse628
12.4.2 Das Startobjekt festlegen628
12.4.3 Kommandozeilenparameter verarbeiten630
12.4.4 Die Anwendung beenden630
12.4.5 Auswerten von Anwendungsereignissen631
12.5 Die Window-Klasse632
12.5.1 Position und Größe festlegen632
12.5.2 Rahmen und Beschriftung632
12.5.3 Das Fenster-Icon ändern633
12.5.4 Anzeige weiterer Fenster633
12.5.5 Transparenz633
12.5.6 Abstand zum Inhalt festlegen634
12.5.7 Fenster ohne Fokus anzeigen635
12.5.8 Ereignisfolge bei Fenstern635
12.5.9 Ein paar Worte zur Schriftdarstellung636
TextOptions.TextFormattingMode636
TextOptions.TextRenderingMode637
12.5.10 Ein paar Worte zur Controldarstellung638
12.5.11 Wird mein Fenster komplett mit WPF gerendert?640
13 Übersicht WPF-Controls642
13.1 Allgemeingültige Eigenschaften642
13.2 Label644
13.3 Button, RepeatButton, ToggleButton644
13.3.1 Schaltflächen für modale Dialoge645
13.3.2 Schaltflächen mit Grafik646
13.4 TextBox, PasswortBox647
13.4.1 TextBox647
13.4.2 PasswordBox649
13.5 CheckBox650
13.6 RadioButton651
13.7 ListBox, ComboBox653
13.7.1 ListBox653
13.7.2 ComboBox656
13.7.3 Den Content formatieren657
13.8 Image659
13.8.1 Grafik per XAML zuweisen659
13.8.2 Grafik zur Laufzeit zuweisen659
13.8.3 Bild aus Datei laden660
13.8.4 Die Grafikskalierung beeinflussen661
13.9 MediaElement662
13.10 Slider, ScrollBar665
13.10.1 Slider665
13.10.2 ScrollBar666
13.11 ScrollViewer667
13.12 Menu, ContextMenu668
13.12.1 Menu668
13.12.2 Tastenkürzel669
13.12.3 Grafiken670
13.12.4 Weitere Möglichkeiten671
13.12.5 ContextMenu672
13.13 ToolBar673
Der ToolBarTray674
13.14 StatusBar, ProgressBar676
13.14.1 StatusBar676
13.14.2 ProgressBar678
13.15 Border, GroupBox, BulletDecorator679
13.15.1 Border679
13.15.2 GroupBox680
13.15.3 BulletDecorator681
13.16 RichTextBox683
13.16.1 Verwendung und Anzeige von vordefiniertem Text683
13.16.2 Neues Dokument zur Laufzeit erzeugen685
13.16.3 Sichern von Dokumenten685
13.16.4 Laden von Dokumenten687
13.16.5 Texte per Code einfügen/modifizieren688
13.16.6 Texte formatieren689
13.16.7 EditingCommands691
13.16.8 Grafiken/Objekte einfügen691
13.16.9 Rechtschreibkontrolle693
13.17 FlowDocumentPageViewer & Co.693
13.17.1 FlowDocumentPageViewer693
13.17.2 FlowDocumentReader694
13.17.3 FlowDocumentScrollViewer694
13.18 FlowDocument694
13.18.1 FlowDocument per XAML beschreiben695
13.18.2 FlowDocument per Code erstellen697
13.19 DocumentViewer698
13.20 Expander, TabControl699
13.20.1 Expander699
13.20.2 TabControl701
13.21 Popup702
13.22 TreeView704
13.23 ListView707
13.24 DataGrid708
13.25 Calendar/DatePicker708
DisplayMode709
DisplayDate, SelectedDate und SelectedDates709
Auswahlmodi709
Sperrtage711
Calendar skalieren712
13.26 InkCanvas712
13.26.1 Stift-Parameter definieren713
13.26.2 Die Zeichenmodi714
13.26.3 Inhalte laden und sichern714
13.26.4 Konvertieren in eine Bitmap715
13.26.5 Weitere Eigenschaften716
13.27 Ellipse, Rectangle, Line und Co.716
13.27.1 Ellipse716
13.27.2 Rectangle717
13.27.3 Line717
13.28 Browser718
13.29 Ribbon720
13.29.1 Allgemeine Grundlagen720
13.29.2 Download/Installation722
13.29.3 Erste Schritte722
13.29.4 Registerkarten und Gruppen723
13.29.5 Kontextabhängige Registerkarten724
13.29.6 Einfache Beschriftungen725
13.29.7 Schaltflächen726
Schaltflächen zusammenfassen727
13.29.8 Auswahllisten727
13.29.9 Optionsauswahl730
13.29.10 Texteingaben730
13.29.11 Screentips731
13.29.12 Symbolleiste für den Schnellzugriff732
13.29.13 Das RibbonWindow732
13.29.14 Menüs733
13.29.15 Anwendungsmenü735
13.29.16 Alternativen738
13.30 Chart738
13.31 WindowsFormsHost739
14 Wichtige WPF-Techniken742
14.1 Eigenschaften742
14.1.1 Abhängige Eigenschaften (Dependency Properties)742
14.1.2 Angehängte Eigenschaften (Attached Properties)743
14.2 Einsatz von Ressourcen744
14.2.1 Was sind eigentlich Ressourcen?744
14.2.2 Wo können Ressourcen gespeichert werden?744
14.2.3 Wie definiere ich eine Ressource?746
14.2.4 Statische und dynamische Ressourcen747
14.2.5 Wie werden Ressourcen adressiert?748
14.2.6 System-Ressourcen einbinden749
14.3 Das WPF-Ereignis-Modell749
14.3.1 Einführung749
14.3.2 Routed Events750
14.3.3 Direkte Events752
14.4 Verwendung von Commands752
14.4.1 Einführung in Commands753
14.4.2 Verwendung vordefinierter Commands753
14.4.3 Das Ziel des Commands755
14.4.4 Vordefinierte Commands756
14.4.5 Commands an Ereignismethoden binden756
14.4.6 Wie kann ich ein Command per Code auslösen?758
14.4.7 Command-Ausführung verhindern758
14.5 Das WPF-Style-System758
14.5.1 Übersicht758
14.5.2 Benannte Styles759
14.5.3 Typ-Styles761
14.5.4 Styles anpassen und vererben762
Styles anpassen (überschreiben)762
Style ersetzen762
Styles vererben763
Styleänderung per Code764
14.6 Verwenden von Triggern764
14.6.1 Eigenschaften-Trigger (Property triggers)764
14.6.2 Ereignis-Trigger766
14.6.3 Daten-Trigger767
14.7 Einsatz von Templates768
14.7.1 Template abrufen und verändern772
14.8 Transformationen, Animationen, StoryBoards775
14.8.1 Transformationen775
Drehen mit RotateTransform776
Skalieren mit ScaleTransform777
Verformen mit SkewTransform777
Verschieben mit TranslateTransform778
Und alles zusammen mit TransformGroup778
14.8.2 Animationen mit dem StoryBoard realisieren780
Animation per VB-Code realisieren781
Animation per Code steuern781
Mehrere Animationen zusammenfassen784
14.9 Praxisbeispiel784
14.9.1 Arbeiten mit Microsoft Expression Blend784
Eine Animation realisieren785
Der XAML-Code786
Test787
Bemerkung787
15 WPF-Datenbindung790
15.1 Grundprinzip790
15.1.1 Bindungsarten791
15.1.2 Wann wird eigentlich die Quelle aktualisiert?792
15.1.3 Geht es auch etwas langsamer?793
15.1.4 Bindung zur Laufzeit realisieren794
15.2 Binden an Objekte796
15.2.1 Objekte im Code instanziieren796
15.2.2 Verwenden der Instanz im VB-Quellcode797
15.2.3 Anforderungen an die Quell-Klasse798
15.2.4 Instanziieren von Objekten per VB-Code800
15.3 Binden von Collections801
15.3.1 Anforderung an die Collection801
15.3.2 Einfache Anzeige802
15.3.3 Navigation zwischen den Objekten803
15.3.4 Einfache Anzeige in einer ListBox804
Verwendung von DisplayMemberPath805
15.3.5 DataTemplates zur Anzeigeformatierung806
15.3.6 Mehr zu List- und ComboBox807
SelectedIndex807
SelectedItem/SelectedItems807
SelectedValuePath und SelectedValue808
15.3.7 Verwenden der ListView809
Einfache Bindung809
Sortieren der Einträge810
15.4 Noch einmal zurück zu den Details811
15.4.1 Navigieren in den Daten811
15.4.2 Sortieren812
15.4.3 Filtern813
15.4.4 Live Shaping814
15.5 Anzeige von Datenbankinhalten815
15.5.1 Datenmodell per LINQ to SQL-Designer erzeugen815
15.5.2 Die Programm-Oberfläche816
15.5.3 Der Zugriff auf die Daten818
15.6 Drag & Drop-Datenbindung819
15.6.1 Vorgehensweise819
15.6.2 Weitere Möglichkeiten822
15.7 Formatieren von Werten823
15.7.1 IValueConverter824
15.7.2 BindingBase.StringFormat-Eigenschaft826
15.8 Das DataGrid als Universalwerkzeug827
15.8.1 Grundlagen der Anzeige828
UI-Virtualisierung829
Spalten selbst definieren829
Zusatzinformationen in den Zeilen anzeigen831
15.8.2 Vom Betrachten zum Editieren832
15.9 Praxisbeispiele832
15.9.1 Collections in Hintergrundthreads füllen832
Oberfläche833
Das Problem833
Lösung (bis .NET 4.0)834
Test835
Lösung (ab .NET 4.5)835
Test836
15.9.2 Drag & Drop-Bindung bei 1:n-Beziehungen836
Oberfläche836
Quellcode (XAML)837
Quellcode (VB)838
Test839
16 Druckausgabe mit WPF840
16.1 Grundlagen840
16.1.1 XPS-Dokumente840
16.1.2 System.Printing841
16.1.3 System.Windows.Xps842
16.2 Einfache Druckausgaben mit dem PrintDialog842
16.3 Mehrseitige Druckvorschau-Funktion845
16.3.1 Fix-Dokumente845
Einsatzbeispiel845
Die Klasse FixedPrintManager849
16.3.2 Flow-Dokumente851
Einführungsbeispiel851
Die Klasse FlowPrintManager853
16.4 Druckerinfos, -auswahl, -konfiguration854
16.4.1 Die installierten Drucker bestimmen855
16.4.2 Den Standarddrucker bestimmen856
16.4.3 Mehr über einzelne Drucker erfahren856
16.4.4 Spezifische Druckeinstellungen vornehmen858
16.4.5 Direkte Druckausgabe860
17 Erste Schritte in WinRT864
17.1 Grundkonzepte und Begriffe864
17.1.1 Windows Runtime (WinRT)864
17.1.2 Windows Store Apps865
17.1.3 Fast and Fluid866
17.1.4 Process Sandboxing und Contracts867
17.1.5 .NET WinRT-Profil869
17.1.6 Language Projection869
17.1.7 Vollbildmodus871
17.1.8 Windows Store871
17.1.9 Zielplattformen872
17.2 Entwurfsumgebung873
17.2.1 Betriebssystem873
17.2.2 Windows-Simulator874
17.2.3 Remote-Debugging876
17.3 Ein (kleines) Einstiegsbeispiel877
17.3.1 Aufgabenstellung877
17.3.2 Quellcode877
17.3.3 Oberflächenentwurf880
17.3.4 Installation und Test882
17.3.5 Verbesserungen883
Persistenz883
Touchscreen885
17.3.6 Fazit886
17.4 Weitere Details zu WinRT888
17.4.1 Wo ist WinRT einzuordnen?888
17.4.2 Die WinRT-API889
Benutzerschnittstelle890
Daten & Kommunikation890
Geräte und Medien891
Anwendungsdienste891
17.4.3 Wichtige WinRT-Namespaces891
17.4.4 Der Unterbau892
Die Schnittstellen892
Language Projection893
Assemblies für WinRT894
17.5 Gedanken zum Thema "WinRT & Tablets"895
17.5.1 Windows 8-Oberfläche versus Desktop895
17.5.2 Tablets und Touchscreens895
17.6 Praxisbeispiel897
17.6.1 WinRT in Desktop-Applikationen nutzen897
Oberfläche897
Quellcode898
Test899
Bemerkungen899
18 WinRT-Oberflächen entwerfen900
18.1 Grundkonzepte900
18.1.1 XAML (oder HTML 5) für die Oberfläche901
18.1.2 Die Page, der Frame und das Window902
18.1.3 Das Befehlsdesign903
App-Leisten904
Settingsbereich905
18.1.4 Die Navigationsdesigns905
18.1.5 Achtung: Fingereingabe!906
18.1.6 Verwendung von Schriftarten907
18.2 Projekttypen und Seitentemplates907
18.2.1 Leere App907
18.2.2 Geteilte App (Split App)909
18.2.3 Raster-App (Grid App)911
18.2.4 Leere Seite (Blank Page)912
18.2.5 Standardseite (Basic Page)913
18.2.6 Ein eigenes Grundlayout erstellen915
18.3 Seitenauswahl und -navigation916
18.3.1 Die Startseite festlegen916
18.3.2 Navigation und Parameterübergabe916
18.3.3 Den Seitenstatus erhalten917
18.4 Die vier App-Ansichten918
18.4.1 Vollbild quer und hochkant918
18.4.2 Angedockt und Füllmodus918
18.4.3 Reagieren auf die Änderung919
SizeChanged auswerten919
VisualStateManager920
18.4.4 Angedockten Modus aktiv beenden922
18.5 Skalieren von Apps923
18.6 Praxisbeispiele925
18.6.1 Seitennavigation und Parameterübergabe925
Oberfläche BasicPage1925
Quellcode BasicPage1926
Oberfläche BasicPage2926
Quellcode BasicPage2926
Test926
Bemerkung927
18.6.2 Auf Ansichtsänderungen reagieren927
Oberfläche & Quellcode BasicPage1927
Oberfläche & Quellcode BlankPage1927
Oberfläche der beiden Frame-Seiten929
Oberfläche & Quellcode BasicPage2929
Test930
18.7 Tipps & Tricks930
18.7.1 Symbole für WinRT-Oberflächen finden930
18.7.2 Wie werde ich das Grufti-Layout schnell los?931
19 Die wichtigsten Controls934
19.1 Einfache WinRT-Controls934
19.1.1 TextBlock, RichTextBlock934
19.1.2 Button, HyperlinkButton, RepeatButton937
19.1.3 CheckBox, RadioButton, ToggleButton, ToggleSwitch939
19.1.4 TextBox, PasswordBox, RichEditBox940
19.1.5 Image944
19.1.6 ScrollBar, Slider, ProgressBar, ProgressRing945
19.1.7 Border, Ellipse, Rectangle947
19.2 Layout-Controls948
19.2.1 Canvas948
19.2.2 StackPanel949
19.2.3 ScrollViewer949
19.2.4 Grid950
19.2.5 VariableSizedWrapGrid951
19.3 Listendarstellungen952
19.3.1 ComboBox, ListBox952
19.3.2 ListView956
19.3.3 GridView958
19.3.4 FlipView960
19.4 Sonstige Controls962
19.4.1 CaptureElement962
19.4.2 MediaElement963
19.4.5 ToolTip966
19.5 Praxisbeispiele968
19.5.1 Einen StringFormat-Konverter implementieren968
Quellcode Klasse StringFormatConverter968
Verwendung des Konverters969
Test970
19.5.2 Besonderheiten der TextBox kennen lernen970
Virtuelle Tastatur970
Tasteneingaben validieren/filtern972
19.5.3 Daten in der GridView gruppieren973
Oberfläche974
Quelltext975
Test976
Bemerkung976
19.5.4 Das SemanticZoom-Control verwenden978
Oberflächen979
Quellcode981
Test982
19.5.5 Die CollectionViewSource verwenden983
Oberfläche983
Quelltext984
Test985
19.5.6 Zusammenspiel ListBox/AppBar986
Oberfläche986
Quelltext987
Test989
19.5.7 Musikwiedergabe im Hintergrund realisieren989
Oberfläche990
Quelltext991
Test993
Bemerkung993
20 Apps im Detail994
20.1 Ein Windows Store App-Projekt im Detail994
20.1.1 Contracts und Extensions995
20.1.2 AssemblyInfo.vb996
20.1.3 Verweise997
20.1.4 App.xaml und App.xaml.vb998
20.1.5 Package.appxmanifest999
Anwendungsbenutzeroberfläche999
Funktionen1000
Deklarationen1002
Verpacken1003
20.1.6 Application1_TemporaryKey.pfx1003
20.1.7 MainPage.xaml & MainPage.xaml.vb1003
20.1.8 Datentyp-Konverter/Hilfsklassen1003
BooleanToVisibilityConverter.vb1004
BooleanNegationConverter.vb1005
RichTextColumns.vb1005
SuspensionManager.vb1005
LayoutAwarePage.vb1006
20.1.9 StandardStyles.xaml1006
20.1.10 Assets/Symbole1007
20.1.11 Nach dem Kompilieren1008
20.2 Der Lebenszyklus einer WinRT-App1008
20.2.1 Möglichkeiten der Aktivierung von Apps1010
20.2.2 Der Splash Screen1012
20.2.3 Suspending1012
20.2.4 Resuming1013
20.2.5 Beenden von Apps1014
20.2.6 Die Ausnahmen von der Regel1015
20.2.7 Debuggen1015
Verwendung einer Protokolldatei1015
Debuggen mit DebugView1017
Steuern der Programmzustände über Visual Studio1018
Debuggen von Contract-aktivierten Apps1018
20.3 Daten speichern und laden1019
20.3.1 Grundsätzliche Überlegungen1019
20.3.2 Worauf und wie kann ich zugreifen?1019
20.3.3 Das AppData-Verzeichnis1020
LocalFolder1020
RoamingFolder1021
TemporaryFolder1021
20.3.4 Das Anwendungs-Installationsverzeichnis1022
20.3.5 Das Downloads-Verzeichnis1023
20.3.6 Sonstige Verzeichnisse1024
20.3.7 Anwendungsdaten lokal sichern und laden1025
20.3.8 Daten in der Cloud ablegen/laden (Roaming)1027
20.3.9 Aufräumen1029
20.3.10 Sensible Informationen speichern1029
20.4 Praxisbeispiele1031
20.4.1 Unterstützung für den Search-Contract bieten1031
Oberfläche1032
Quelltext (App.xaml.vb)1033
Quelltext (SearchPage.xaml.vb)1036
Quelltext (DetailPage.xaml.vb)1036
Test1037
Erweiterungen1037
20.4.2 Die Auto-Play-Funktion unterstützen1038
Anpassen Package.appxmanifest1038
Quelltext1040
Oberfläche1041
Test1041
20.4.3 Einen zusätzlichen Splash Screen einsetzen1042
Oberfläche (ErsatzSplashscreen.xaml)1042
Quellcode (App.xaml.vb)1043
Quellcode (ErsatzSplashScreen.xaml.vb)1043
Test1044
20.4.4 Eine Dateiverknüpfung erstellen1044
Oberfläche1044
Quelltext (App.xaml.vb)1045
Quelltext (BasicPage.xaml.vb)1046
Test1046
Ergänzungen1047
21 WinRT-Techniken1050
21.1 Arbeiten mit Dateien/Verzeichnissen1050
21.1.1 Verzeichnisinformationen auflisten1050
21.1.2 Unterverzeichnisse auflisten1053
21.1.3 Verzeichnisse erstellen/löschen1055
21.1.4 Dateien auflisten1056
21.1.5 Dateien erstellen/schreiben/lesen1058
Datei erstellen1058
Schreibzugriff mit FileIO1059
Schreibzugriff mit StreamWriter1060
Lesezugriff mit FileIO1061
Lesezugriff mit StreamReader1061
21.1.6 Dateien kopieren/umbenennen/löschen1062
21.1.7 Verwenden der Dateipicker1064
FileOpenPicker1064
FileSavePicker1067
FolderPicker1068
21.1.8 StorageFile-/StorageFolder-Objekte speichern1070
21.1.9 Verwenden der Most Recently Used-Liste1072
21.2 Datenaustausch zwischen Apps/Programmen1073
21.2.1 Zwischenablage1073
Texte kopieren und einfügen1074
Bilder kopieren und einfügen1076
Dateien kopieren/verschieben und abrufen1077
Zwischenablage überwachen1079
21.2.2 Teilen von Inhalten1080
Funktion "Teilen" programmgesteuert aufrufen1083
Sie möchten temporär keine Daten teilen1083
21.2.3 Eine App als Freigabeziel verwenden1084
21.2.4 Zugriff auf die Kontaktliste1084
21.3 Spezielle Oberflächenelemente1086
21.3.1 MessageDialog1086
Dialog mit Auswahl1087
Alternativen beim Auswerten der Tasten1088
Ergänzungen1089
21.3.2 Popup-Benachrichtigungen1089
Wann sollten Sie Popup-Benachrichtigungen einsetzen?1090
Was können Sie alles parametrieren?1092
Und wie funktioniert das alles?1092
Unser ToastNotification-"Bäckerei"1093
Prüfen auf Funktionsfähigkeit1096
21.3.3 PopUp/Flyouts1097
21.3.4 Das PopupMenu einsetzen1101
21.3.5 Eine AppBar verwenden1103
21.4 Datenbanken und Windows Store Apps1108
21.4.1 Der Retter in der Not: SQLite!1108
21.4.2 Verwendung/Kurzüberblick1108
Was eigentlich ist SQLite?1108
Vorteile1109
Nachteile1109
21.4.3 Installation1110
21.4.4 Wie kommen wir zu einer neuen Datenbank?1112
21.4.5 Wie werden die Daten manipuliert?1116
21.5 Vertrieb der App1118
21.5.1 Verpacken der App1118
21.5.2 Windows App Certification Kit1120
21.5.3 App-Installation per Skript1122
21.6 Ein Blick auf die App-Schwachstellen1123
21.6.1 Quellcodes im Installationsverzeichnis1123
21.6.2 Zugriff auf den App-Datenordner1125
21.7 Praxisbeispiele1125
21.7.1 Ein Verzeichnis auf Änderungen überwachen1125
Oberfläche1126
Quellcode1126
Test1127
21.7.2 Eine App als Freigabeziel verwenden1128
Oberfläche1128
Registrieren der App als Freigabeziel1129
Quellcode (App.xaml.vb)1130
Quellcode (InsertPage.xaml.vb)1130
Test1132
21.7.3 ToastNotifications einfach erzeugen1133
Quellcode1133
Test1137
Index1148
Ergänzungsband1170
Zweites Vorwort1194
22 XML in Theorie und Praxis1198
22.1 XML – etwas Theorie1198
22.1.1 Übersicht1198
22.1.2 Der XML-Grundaufbau1201
22.1.3 Wohlgeformte Dokumente1202
22.1.4 Processing Instructions (PI)1205
22.1.5 Elemente und Attribute1205
22.1.6 Verwendbare Zeichensätze1207
22.2 XSD-Schemas1209
22.2.1 XSD-Schemas und ADO.NET1209
22.2.2 XML-Schemas in Visual Studio analysieren1211
Der XML-Schema-Explorer1212
Ausgangsansicht des XML-Schema-Designer1212
Inhaltsmodellansicht1213
XML-Editor1214
22.2.3 XML-Datei mit XSD-Schema erzeugen1214
22.2.4 XSD-Schema aus einer XML-Datei erzeugen1215
22.3 XML-Integration in Visual Basic1216
22.3.1 XML-Literale1216
22.3.2 Einfaches Navigieren durch späte Bindung1219
22.3.3 Die LINQ to XML-API1221
22.3.4 Neue XML-Dokumente erzeugen1222
22.3.5 Laden und Sichern von XML-Dokumenten1224
22.3.6 Navigieren in XML-Daten1226
22.3.7 Auswählen und Filtern1228
22.3.8 Manipulieren der XML-Daten1228
Editieren der Daten1229
Hinzufügen von Daten1229
Löschen1230
22.3.9 XML-Dokumente transformieren1230
22.4 Verwendung des DOM unter .NET1233
22.4.1 Übersicht1233
22.4.2 DOM-Integration in Visual Basic1234
22.4.3 Laden von Dokumenten1234
22.4.4 Erzeugen von XML-Dokumenten1235
22.4.5 Auslesen von XML-Dateien1237
22.4.6 Direktzugriff auf einzelne Elemente1238
22.4.7 Einfügen von Informationen1239
22.4.8 Suchen in den Baumzweigen1241
22.5 Weitere Möglichkeiten der XML-Verarbeitung1245
22.5.1 Die relationale Sicht mit XmlDataDocument1245
Laden von XML-Daten1245
Verwendung des DataSets1246
22.5.2 XML-Daten aus Objektstrukturen erzeugen1248
22.5.3 Schnelles Suchen in XML-Daten mit XPathNavigator1251
22.5.4 Schnelles Auslesen von XML-Daten mit XmlReader1254
22.5.5 Erzeugen von XML-Daten mit XmlWriter1256
22.5.6 XML transformieren mit XSLT1258
22.6 Praxisbeispiele1260
22.6.1 Mit dem DOM in XML-Dokumenten navigieren1260
Oberfläche1260
Quelltext1261
Test1262
Bemerkungen1263
22.6.2 XML-Daten in eine TreeView einlesen1263
Oberfläche1263
Quelltext1264
Test1265
Ergänzung1266
23 Einführung in ADO.NET1268
23.1 Eine kleine Übersicht1268
23.1.1 Die ADO.NET-Klassenhierarchie1268
23.1.2 Die Klassen der Datenprovider1269
.NET-Datenprovider1270
Weitere Datenprovider1270
Anzeige der installierten Datenprovider1271
23.1.3 Das Zusammenspiel der ADO.NET-Klassen1272
23.2 Das Connection-Objekt1273
23.2.1 Allgemeiner Aufbau1273
23.2.2 OleDbConnection1273
Parameter für OleDb-Zugriff1273
OleDb-Provider für Access Datenbank1274
23.2.3 Schließen einer Verbindung1275
23.2.4 Eigenschaften des Connection-Objekts1275
ConnectionString-Eigenschaft1275
Database- und DataSource-Eigenschaft1276
Provider-Eigenschaft1276
ServerVersion-Eigenschaft1276
ConnectionTimeout-Eigenschaft1277
State-Eigenschaft1277
23.2.5 Methoden des Connection-Objekts1277
Open- und Close-Methode1277
ChangeDatabase-Methode1278
CreateCommand-Methode1278
23.2.6 Der ConnectionStringBuilder1278
23.3 Das Command-Objekt1279
23.3.1 Erzeugen und Anwenden eines Command-Objekts1279
23.3.2 Erzeugen mittels CreateCommand-Methode1280
23.3.3 Eigenschaften des Command-Objekts1280
Connection- und CommandText-Eigenschaft1280
CommandTimeout-Eigenschaft1280
CommandType-Eigenschaft1281
23.3.4 Methoden des Command-Objekts1282
ExecuteNonQuery-Methode1282
ExecuteReader-Methode1282
ExecuteScalar-Methode1283
23.3.5 Freigabe von Connection- und Command-Objekten1283
23.4 Parameter-Objekte1285
23.4.1 Erzeugen und Anwenden eines Parameter-Objekts1285
23.4.2 Eigenschaften des Parameter-Objekts1285
ParameterName- und Value-Eigenschaft1285
DbType, OleDbType und SqlDbType-Eigenschaft1286
Direction-Eigenschaft1286
23.5 Das CommandBuilder-Objekt1286
23.5.1 Erzeugen1286
23.5.2 Anwenden1287
23.6 Das DataReader-Objekt1287
23.6.1 DataReader erzeugen1288
23.6.2 Daten lesen1288
23.6.3 Eigenschaften des DataReaders1289
Item-Eigenschaft1289
FieldCount-Eigenschaft1289
IsClosed-Eigenschaft1289
23.6.4 Methoden des DataReaders1289
Read-Methode1289
GetValue- und GetValues-Methode1289
GetOrdinal- und ähnliche Methoden1290
Bemerkungen1290
23.7 Das DataAdapter-Objekt1290
23.7.1 DataAdapter erzeugen1290
Konstruktor mit SELECT-String und Connection-Objekt1290
Konstruktor mit SelectCommand-Objekt1291
23.7.2 Command-Eigenschaften1291
23.7.3 Fill-Methode1292
Begrenzen der Datenmenge1292
23.7.4 Update-Methode1293
23.8 Praxisbeispiele1294
23.8.1 Wichtige ADO.NET-Objekte im Einsatz1294
Oberfläche1294
Quellcode1294
Test1295
Bemerkungen1296
23.8.2 Eine Aktionsabfrage ausführen1296
Oberfläche1296
Quellcode1296
Test1297
Bemerkungen1298
23.8.3 Eine Auswahlabfrage aufrufen1298
Oberfläche1299
Quellcode1299
Test1300
23.8.4 Die Datenbank aktualisieren1300
Oberfläche1301
Quellcode (Command-Objekte selbst programmiert)1301
Test1302
Bemerkungen1303
23.8.5 Den ConnectionString speichern1303
Oberfläche1303
Anwendungseinstellungen eintragen1303
Quellcode1304
Test1305
24 Das DataSet1306
24.1 Grundlegende Features des DataSets1306
24.1.1 Die Objekthierarchie1307
24.1.2 Die wichtigsten Klassen1307
24.1.3 Erzeugen eines DataSets1308
Copy-Methode1308
Clone-Methode1309
GetChanges-/HasChanges-Methode1309
24.2 Das DataTable-Objekt1310
24.2.1 DataTable erzeugen1310
24.2.2 Spalten hinzufügen1310
24.2.3 Zeilen zur DataTable hinzufügen1311
NewRow-Methode1311
ImportRow-Methode1311
24.2.4 Auf den Inhalt einer DataTable zugreifen1312
Columns- und Rows-Eigenschaften1312
TableName- und ColumnName-Eigenschaften1312
Find-Methode1313
Zeilen löschen1313
24.3 Die DataView1314
24.3.1 Erzeugen eines DataView1314
24.3.2 Sortieren und Filtern von Datensätzen1314
24.3.3 Suchen von Datensätzen1315
24.4 Typisierte DataSets1315
24.4.1 Ein typisiertes DataSet erzeugen1316
24.4.2 Das Konzept der Datenquellen1317
24.4.3 Typisierte DataSets und TableAdapter1318
Warum sollte man ein typisiertes DataSet einsetzen?1318
Der TableAdapter1319
24.5 Die Qual der Wahl1319
24.5.1 DataReader – der schnelle Lesezugriff1320
24.5.2 DataSet – die Datenbank im Hauptspeicher1320
Typisiertes versus untypisiertes DataSet1320
24.5.3 Objektrelationales Mapping – die Zukunft?1321
LINQ to SQL/LINQ to Entities1321
24.6 Praxisbeispiele1322
24.6.1 Im DataView sortieren und filtern1322
Oberfläche1322
Quellcode1323
Test1323
Bemerkungen1324
24.6.2 Suche nach Datensätzen1324
Oberfläche1324
Quellcode1324
Test1325
24.6.3 Ein DataSet in einen XML-String serialisieren1326
Konvertierungsmethoden1326
Testoberfläche Form11327
Quellcode Form11327
Erzeugen eines untypisierten DataSets als Testobjekt1328
Test1329
24.6.4 Untypisierte in typisierte DataSets konvertieren1330
Konvertierungscode1331
Normales DataSet erzeugen1331
Typisiertes DataSet erzeugen1332
Oberfläche1333
Test1334
Bemerkungen1335
24.6.5 Eine LINQ to SQL-Abfrage ausführen1335
Datenmodell per LINQ to SQL-Designer erzeugen1335
Datenquelle hinzufügen1336
Oberfläche1337
Test1338
Bemerkung1338
25 OOP-Spezial1340
25.1 Eine kleine Einführung in die UML1340
25.1.1 Use Case-Diagramm1340
25.1.2 Use Case-Dokumentation1342
USE CASE: Inbetriebnahme des Autos1342
USE CASE: Versuchter Diebstahl des Autos1343
25.1.3 Objekte identifizieren1343
25.1.4 Statisches Modell1344
25.1.5 Beziehungen zwischen den Klassen1345
25.1.6 Dynamisches Modell1345
Relevante Zustände identifizieren1345
Zustandsüberführungs­diagramm1346
25.1.7 Implementierung1346
Klasse CSchlüssel1347
Klasse CSchloss1347
Klasse CAuto1348
25.1.8 Test-Client1350
Test1352
Bemerkungen1352
25.2 Der Klassen-Designer1353
25.2.1 Ein neues Klassendiagramm erzeugen1353
25.2.2 Werkzeugkasten1355
25.2.3 Enumeration1356
25.2.4 Klasse1357
Klassendetails-Fenster1359
25.2.5 Struktur1359
25.2.6 Abstrakte Klasse1360
25.2.7 Schnittstelle1362
25.2.8 Delegate1364
25.2.9 Zuordnung1366
25.2.10 Vererbung1367
25.2.11 Diagramme anpassen1367
25.2.12 Wann sollten Sie den Klassen-Designer verwenden?1368
25.3 Praxisbeispiele1368
25.3.1 Implementierung einer Finite State Machine1368
Zustandsüberführungsmatrix1369
CAuto1372
Clientcode1374
Test1374
25.3.2 Modellierung des Bestellsystems einer Firma1374
Klassendiagramm1374
Klasse CBestellung1375
Klasse CPerson1377
Klasse CKunde1378
Klasse CFirma1381
Klasse Form11382
Klassendiagramm vervollständigen1384
Abschlusstest1385
Bemerkungen1386
26 Das Microsoft Event Pattern1388
26.1 Einführung in Design Pattern1388
26.2 Aufbau und Bedeutung des Observer Pattern1389
26.2.1 Subjekt und Observer1390
26.2.2 Sequenzdiagramme1391
26.2.3 Die Registration-Sequenz1391
26.2.4 Die Notification-Sequenz1392
26.2.5 Die Unregistration-Sequenz1392
26.2.6 Bedeutung der Sequenzen für das Geschäftsmodell1393
26.2.7 Die Rolle des Containers1393
26.3 Implementierung mit Interfaces und Callbacks1394
26.3.1 Übersicht und Klassendiagramm1394
26.3.2 Schnittstellen IObserver und IObservable1396
26.3.3 Die abstrakte Klasse Subject1396
26.3.4 Observer11397
26.3.5 Observer21398
26.3.6 Model1399
26.3.7 Form11400
26.3.8 Ein zweites Klassendiagramm1401
26.3.9 Testen1402
26.4 Implementierung mit Delegates und Events1403
26.4.1 Multicast-Events1404
26.4.2 IObserver, IObservable und Subject1404
26.4.3 Observer1 und Observer21405
26.4.4 Model1405
26.4.5 Form11405
26.4.6 Test und Vergleich1406
26.4.7 Klassendiagramm1407
26.5 Implementierung des Microsoft Event Pattern1408
26.5.1 Namensgebung für Ereignisse1408
26.5.2 Namensgebung und Signatur der Delegates1408
26.5.3 Hinzufügen einer das Ereignis auslösenden Methode1409
26.5.4 Neue Klasse NumberChangedEventArgs1409
26.5.5 Model1410
26.5.6 Observer11411
26.5.7 Form11411
26.6 Test und Vergleich1412
26.7 Klassendiagramm1412
26.8 Implementierung eines Event Pattern1413
26.9 Praxisbeispiel1414
26.9.1 Subjekt und Observer beobachten sich gegenseitig1414
Oberfläche1414
NumberChangedEventArgs und MaximumChangedEventArgs1415
Model1415
Observer11417
Observer21418
Form11419
Test und Vergleich1421
Klassendiagramm1421
Klassenzusammenstellung1422
27 Verteilen von Anwendungen1424
27.1 ClickOnce-Deployment1425
27.1.1 Übersicht/Einschränkungen1425
27.1.2 Die Vorgehensweise1426
27.1.3 Ort der Veröffentlichung1426
27.1.4 Anwendungsdateien1427
27.1.5 Erforderliche Komponenten1427
27.1.6 Aktualisierungen1428
27.1.7 Veröffentlichungsoptionen1429
27.1.8 Veröffentlichen1430
27.1.9 Verzeichnisstruktur1430
27.1.10 Der Webpublishing-Assistent1432
27.1.11 Neue Versionen erstellen1433
27.2 InstallShield1433
27.2.1 Installation1433
27.2.2 Aktivieren1434
27.2.3 Ein neues Setup-Projekt1434
Anwendungseinstellungen1435
Installationsbedingungen1436
Optionales Setup1437
Anwendungsdateien1437
Startmenü und Verknüpfungen1438
Registrierungseinträge1438
Setup-Dialoge/Erscheinungsbild1439
Installationsdateien1441
27.2.4 Finaler Test1442
28 Weitere Techniken1444
28.1 Zugriff auf die Zwischenablage1444
28.1.1 Das Clipboard-Objekt1444
Kopieren1445
Einfügen1445
28.1.2 Zwischenablage-Funktionen für Textboxen1446
28.2 Arbeiten mit der Registry1446
28.2.1 Allgemeines1447
28.2.2 Registry-Unterstützung in .NET1448
28.3 .NET-Reflection1450
28.3.1 Übersicht1450
28.3.2 Assembly laden1450
28.3.3 Mittels GetType und Type Informationen sammeln1451
28.3.4 Dynamisches Laden von Assemblies1453
Beispiel1453
28.4 Das SerialPort-Control1455
28.4.1 Übersicht1456
Wichtige Eigenschaften1456
Wichtige Methoden1456
Wichtige Ereignisse1457
28.4.2 Einführungsbeispiele1457
SerialPortTalker1457
SerialPortListener1458
Test1458
28.4.3 Thread-Probleme bei Windows Forms-Anwendungen1459
28.4.4 Ein einfaches Terminalprogramm1461
Bedienoberfläche1461
Quellcode1462
Test1465
Bemerkungen zur Verarbeitung von Messdaten1465
28.5 Praxisbeispiele1466
28.5.1 Zugriff auf die Registry1466
Oberfläche1466
Quelltext1466
Test1468
28.5.2 Dateiverknüpfungen erzeugen1468
29 Konsolenanwendungen1470
29.1 Grundaufbau/Konzepte1470
29.1.1 Unser Hauptprogramm – Module1.vb1471
Sub Main()1472
29.1.2 Rückgabe eines Fehlerstatus1472
29.1.3 Parameterübergabe1473
29.1.4 Zugriff auf die Umgebungsvariablen1475
29.2 Die Kommandozentrale: System.Console1476
29.2.1 Eigenschaften1476
29.2.2 Methoden/Ereignisse1476
29.2.3 Textausgaben1477
29.2.4 Farbangaben1478
29.2.5 Tastaturabfragen1479
Modifiers-Eigenschaft und ConsoleModifiers-Enumeration1480
29.2.6 Arbeiten mit Streamdaten1480
29.3 Praxisbeispiel: Farbige Konsolenanwendung1482
30 Windows Forms-Anwendungen1486
30.1 Grundaufbau/Konzepte1486
30.1.1 Wo ist das Hauptprogramm?1487
Visuelle XP-Stile aktivieren1489
Einzelinstanzanwendung erstellen1489
My.Settings beim Herunterfahren speichern1490
Authentifizierungsmodus1490
Modus für das Herunterfahren1490
Begrüßungsbildschirm1490
Anwendungsereignisse1490
Und was ist mit einer eigenen Sub Main?1491
30.1.2 Die Oberflächendefinition – Form1.Designer.vb1492
30.1.3 Die Spielwiese des Programmierers – Form1.vb1493
30.1.4 Die Datei AssemblyInfo.vb1494
30.1.5 Resources.resx/Resources.Designer.vb1495
30.1.6 Settings.settings/Settings.Designer.vb1496
30.2 Ein Blick auf die Application-Klasse1498
30.2.1 Eigenschaften1498
30.2.2 Methoden1499
30.2.3 Ereignisse1500
30.3 Allgemeine Eigenschaften von Komponenten1501
30.3.1 Font1502
30.3.2 Handle1503
30.3.3 Tag1504
30.3.4 Modifiers1504
30.4 Allgemeine Ereignisse von Komponenten1505
30.4.1 Die Eventhandler-Argumente1505
30.4.2 Sender1505
30.4.3 Der Parameter e1507
30.4.4 Mausereignisse1507
Tastaturereignisse1508
30.4.5 KeyPreview1509
30.4.6 Weitere Ereignisse1510
30.4.7 Validierung1511
30.4.8 SendKeys1511
30.5 Allgemeine Methoden von Komponenten1512
31 Windows Forms-Formulare1514
31.1 Übersicht1514
31.1.1 Wichtige Eigenschaften des Form-Objekts1515
Controls-Auflistung1516
31.1.2 Wichtige Ereignisse des Form-Objekts1517
31.1.3 Wichtige Methoden des Form-Objekts1518
31.2 Praktische Aufgabenstellungen1519
31.2.1 Fenster anzeigen1519
Nichtmodale Fenster1519
Modale Fenster (Dialoge)1520
31.2.2 Splash Screens beim Anwendungsstart anzeigen1522
31.2.3 Eine Sicherheitsabfrage vor dem Schließen anzeigen1524
31.2.4 Ein Formular durchsichtig machen1525
31.2.5 Die Tabulatorreihenfolge festlegen1525
31.2.6 Ausrichten und Platzieren von Komponenten1526
Dock1526
Anchor1528
31.2.7 Spezielle Panels für flexibles Layout1529
SplitContainer1529
FlowLayoutPanel1529
TableLayoutPanel1530
31.2.8 Menüs erzeugen1530
MenuStrip1531
ContextMenuStrip1532
Weitere Eigenschaften von Menüeinträgen1533
31.3 MDI-Anwendungen1534
31.3.1 "Falsche" MDI-Fenster bzw. Verwenden von Parent1534
31.3.2 Die echten MDI-Fenster1535
31.3.3 Die Kindfenster1536
31.3.4 Automatisches Anordnen der Kindfenster1537
31.3.5 Zugriff auf die geöffneten MDI-Kindfenster1539
31.3.6 Zugriff auf das aktive MDI-Kindfenster1539
31.3.7 Mischen von Kindfenstermenü/MDIContainer-Menü1539
AllowMerge1540
MergeAction und MergeIndex1540
31.4 Praxisbeispiele1540
31.4.1 Informationsaustausch zwischen Formularen1540
Überblick1540
Bedienoberfläche Form1 (Hauptformular)1541
Bedienoberfläche Form2, Form3, Form4, Form5, Form6 (unterge­ordnete Formulare)1541
Allgemeiner Code für Form11542
Variante 1: Übergabe der Formular-Referenz im Konstruktor1543
Variante 2: Übergabe der Formular-Referenz als Eigenschaft1544
Variante 3: Übergabe der Formular-Referenz als globale Variable1545
Variante 4: Übergabe der Formular-Referenz als Ownership1546
Variante 5: Verwendung der Standardinstanzen der Formulare1547
31.4.2 Ereigniskette beim Laden/Entladen eines Formulars1548
Bedienoberfläche (Form1 und Form2)1548
Anderes Startformular auswählen1549
Quellcode von Form11549
Quellcode von Form21551
Test1551
Bemerkungen1552
32 Komponenten-Übersicht1554
32.1 Allgemeine Hinweise1554
32.1.1 Hinzufügen von Komponenten1554
32.1.2 Komponenten zur Laufzeit per Code erzeugen1555
32.2 Allgemeine Steuerelemente1557
32.2.1 Label1557
32.2.2 LinkLabel1558
Wichtige Eigenschaften1558
Hyperlink einfügen1558
32.2.3 Button1559
32.2.4 TextBox1560
Mehrzeilige Textboxen1560
Markieren von Text1561
PasswordChar1562
Automatisches Vervollständigen1562
32.2.5 MaskedTextBox1563
32.2.6 CheckBox1564
32.2.7 RadioButton1566
32.2.8 ListBox1567
32.2.9 CheckedListBox1568
32.2.10 ComboBox1569
32.2.11 PictureBox1570
32.2.12 DateTimePicker1570
32.2.13 MonthCalendar1571
32.2.14 HScrollBar, VScrollBar1571
32.2.15 TrackBar1572
32.2.16 NumericUpDown1573
32.2.17 DomainUpDown1574
32.2.18 ProgressBar1574
32.2.19 RichTextBox1575
32.2.20 ListView1576
ListViewItem1576
ImageList1577
Übersichten zur ListView1577
32.2.21 TreeView1582
Knoten zur Laufzeit erzeugen1583
Auswerten des aktiven Knotens1584
Wichtige Eigenschaften von TreeView1585
Wichtige Methoden von TreeView1586
Wichtige Ereignisse von TreeView1586
Wichtige Eigenschaften von TreeNode1586
Wichtige Methoden von TreeNode1587
32.2.22 WebBrowser1587
32.3 Container1588
32.3.1 FlowLayout/TableLayout/SplitContainer1588
32.3.2 Panel1588
Oberflächen gestalten1588
32.3.3 GroupBox1589
32.3.4 TabControl1590
Wichtige Eigenschaften1591
Wichtige Ereignisse1591
32.3.5 ImageList1592
32.4 Menüs & Symbolleisten1593
32.4.1 MenuStrip und ContextMenuStrip1593
32.4.2 ToolStrip1593
32.4.3 StatusStrip1593
32.4.4 ToolStripContainer1594
32.5 Daten1594
32.5.1 DataSet1594
32.5.2 DataGridView/DataGrid1595
32.5.3 BindingNavigator/BindingSource1595
32.5.4 Chart1595
32.6 Komponenten1596
32.6.1 ErrorProvider1597
32.6.2 HelpProvider1597
32.6.3 ToolTip1597
32.6.4 Timer1597
32.6.5 BackgroundWorker1597
32.6.6 SerialPort1598
32.7 Drucken1598
32.7.1 PrintPreviewControl1598
32.7.2 PrintDocument1598
32.8 Dialoge1598
32.8.1 OpenFileDialog/SaveFileDialog/FolderBrowserDialog1598
32.8.2 FontDialog/ColorDialog1598
32.9 WPF-Unterstützung mit dem ElementHost1599
32.10 Praxisbeispiele1599
32.10.1 Mit der CheckBox arbeiten1599
Oberfläche1599
Quellcode1600
Test1600
32.10.2 Steuerelemente per Code selbst erzeugen1601
Oberfläche1601
Quellcode1601
Test1602
Bemerkungen1603
32.10.3 Controls-Auflistung im TreeView anzeigen1603
Oberfläche1603
Quellcode1605
Test1606
32.10.4 WPF-Komponenten mit dem ElementHost anzeigen1606
Oberfläche (WPF-Control)1607
Oberfläche (Windows Forms)1609
33 Grundlagen der Grafikausgabe1612
33.1 Übersicht und erste Schritte1612
33.1.1 GDI+ – Ein erster Blick für Umsteiger1613
Ein zentrales Grafikausgabe-Objekt1613
Die Grafikausgabe ist zustandslos1613
Prinzipieller Ablauf1613
Wichtige Features1614
33.1.2 Namespaces für die Grafikausgabe1614
System.Drawing1614
System.Drawing.Drawing2D1615
System.Drawing.Imaging1615
System.Drawing.Printing1615
System.Drawing.Design1616
System.Drawing.Text1616
33.2 Darstellen von Grafiken1616
33.2.1 Die PictureBox-Komponente1616
33.2.2 Das Image-Objekt1617
33.2.3 Laden von Grafiken zur Laufzeit1618
33.2.4 Sichern von Grafiken1618
Spezielle Einstellungen1619
33.2.5 Grafikeigenschaften ermitteln1619
Breite und Höhe der Grafik1619
Auflösung1619
Grafiktyp1619
Interner Bitmap-Aufbau1620
33.2.6 Erzeugen von Vorschaugrafiken (Thumbnails)1620
33.2.7 Die Methode RotateFlip1621
33.2.8 Skalieren von Grafiken1622
33.3 Das .NET-Koordinatensystem1623
33.3.1 Globale Koordinaten1624
33.3.2 Seitenkoordinaten (globale Transformation)1625
Translation (Verschiebung)1625
Skalierung (Vergrößerung/Verkleinerung)1625
Rotation1626
33.3.3 Gerätekoordinaten (Seitentransformation)1627
33.4 Grundlegende Zeichenfunktionen von GDI+1628
33.4.1 Das zentrale Graphics-Objekt1628
Wie erzeuge ich ein Graphics-Objekt?1629
Die Invalidate-Methode1630
Die Eigenschaft ResizeRedraw1630
33.4.2 Punkte zeichnen/abfragen1631
33.4.3 Linien1632
33.4.4 Kantenglättung mit Antialiasing1633
33.4.5 PolyLine1634
33.4.6 Rechtecke1634
DrawRectangle1634
FillRectangle1635
DrawRectangles/FillRectangles1635
33.4.7 Polygone1636
33.4.8 Splines1636
33.4.9 Bézierkurven1638
33.4.10 Kreise und Ellipsen1639
33.4.11 Tortenstück (Segment)1639
Kuchendiagramme1640
33.4.12 Bogenstück1641
33.4.13 Wo sind die Rechtecke mit den "runden Ecken"?1641
33.4.14 Textausgabe1643
Texteigenschaften1643
Ausgabe von mehrzeiligem Text1644
Textattribute1644
Ausgabequalität1645
Und wo bleibt eine Methode zum Drehen von Text?1646
33.4.15 Ausgabe von Grafiken1647
Skalieren1647
33.5 Unser Werkzeugkasten1648
33.5.1 Einfache Objekte1648
Point, FPoint1648
Size, FSize1648
Rectangle, FRectangle1649
33.5.2 Vordefinierte Objekte1649
Vordefinierte Pinsel1649
Vordefinierte Stifte1650
Vordefinierte Farben1650
Vordefinierte Icons1650
33.5.3 Farben/Transparenz1651
ARGB-Farben1651
Was ist mit dem höchstwertigen Byte?1652
33.5.4 Stifte (Pen)1653
Einfarbige Stifte1653
Stifte mit Füllung1655
33.5.5 Pinsel (Brush)1656
33.5.6 SolidBrush1656
33.5.7 HatchBrush1656
33.5.8 TextureBrush1658
33.5.9 LinearGradientBrush1658
33.5.10 PathGradientBrush1660
33.5.11 Fonts1661
33.5.12 Path-Objekt1662
Füllen1663
Fillmode1664
33.5.13 Clipping/Region1665
Regions1666
Clipping1667
33.6 Standarddialoge1668
33.6.1 Schriftauswahl1668
33.6.2 Farbauswahl1669
33.7 Praxisbeispiele1671
33.7.1 Ein Graphics-Objekt erzeugen1671
Variante 1: Verwendung des Paint-Events1672
Test1672
Variante 2: Überschreiben der OnPaint-Methode1672
Test1673
Variante 3: Graphics-Objekt mit CreateGraphics erzeugen1673
Test1673
Variante 4: Verwendung des Graphics-Objekts einer PictureBox1674
33.7.2 Zeichenoperationen mit der Maus realisieren1674
Oberfläche1674
Quelltext1674
Test1677
34 Druckausgabe1678
34.1 Einstieg und Übersicht1678
34.1.1 Nichts geht über ein Beispiel1678
34.1.2 Programmiermodell1680
34.1.3 Kurzübersicht der Objekte1681
34.2 Auswerten der Druckereinstellungen1681
34.2.1 Die vorhandenen Drucker1681
34.2.2 Der Standarddrucker1682
34.2.3 Verfügbare Papierformate/Seitenabmessungen1682
34.2.4 Der eigentliche Druckbereich1684
34.2.5 Die Seitenausrichtung ermitteln1684
34.2.6 Ermitteln der Farbfähigkeit1685
34.2.7 Die Druckauflösung abfragen1685
34.2.8 Ist beidseitiger Druck möglich?1686
34.2.9 Einen "Informationsgerätekontext" erzeugen1686
34.2.10 Abfragen von Werten während des Drucks1687
34.3 Festlegen von Druckereinstellungen1688
34.3.1 Einen Drucker auswählen1688
34.3.2 Drucken in Millimetern1688
34.3.3 Festlegen der Seitenränder1689
34.3.4 Druckjobname1690
34.3.5 Die Anzahl der Kopien festlegen1690
34.3.6 Beidseitiger Druck1691
34.3.7 Seitenzahlen festlegen1692
34.3.8 Druckqualität verändern1695
34.3.9 Ausgabemöglichkeiten des Chart-Controls nutzen1695
34.4 Die Druckdialoge verwenden1696
34.4.1 PrintDialog1696
34.4.2 PageSetupDialog1697
Probleme mit den Rändern1698
34.4.3 PrintPreviewDialog1699
34.4.4 Ein eigenes Druckvorschau-Fenster realisieren1700
34.5 Drucken mit OLE-Automation1701
34.5.1 Kurzeinstieg in die OLE-Automation1701
Programmieren der OLE-Automation1702
New1702
GetObject und CreateObject1703
34.5.2 Drucken mit Microsoft Word1704
34.6 Praxisbeispiele1706
34.6.1 Den Drucker umfassend konfigurieren1706
Oberfläche (Hauptformular Form1)1707
Oberfläche (Druckvorschau Form2)1707
Quelltext (Form1)1708
Quelltext (Form2)1713
Test1714
34.6.2 Diagramme mit dem Chart-Control drucken1716
Oberfläche1716
Quelltext1716
Test1717
34.6.3 Drucken mit Word1718
Oberfläche1718
Quelltext1719
Test1721
Anmerkung ab .NET 41722
35 Windows Forms-Datenbindung1724
35.1 Prinzipielle Möglichkeiten1724
35.2 Manuelle Bindung an einfache Datenfelder1725
35.2.1 BindingSource erzeugen1725
35.2.2 Binding-Objekt1726
35.2.3 DataBindings-Collection1726
Bemerkungen1726
35.3 Manuelle Bindung an Listen und Tabellen1726
35.3.1 DataGridView1727
35.3.2 Datenbindung von ComboBox und ListBox1727
35.4 Entwurfszeit-Bindung an typisierte DataSets1727
35.5 Drag & Drop-Datenbindung1729
35.6 Navigations- und Bearbeitungsfunktionen1729
35.6.1 Navigieren zwischen den Datensätzen1729
35.6.2 Hinzufügen und Löschen1729
35.6.3 Aktualisieren und Abbrechen1730
35.6.4 Verwendung des BindingNavigators1730
35.7 Die Anzeigedaten formatieren1731
35.8 Praxisbeispiele1731
35.8.1 Einrichten und Verwenden einer Datenquelle1731
Assistent zum Konfigurieren von Datenquellen1731
Verwenden der Datenquelle1733
Test1734
Abfragemethoden hinzufügen1734
35.8.2 Eine Auswahlabfrage im DataGridView anzeigen1735
Oberfläche1736
Quellcode1736
Test1737
35.8.3 Master-Detailbeziehungen im DataGrid anzeigen1738
Oberfläche1738
Quellcode1738
Test1739
35.8.4 Datenbindung Chart-Control1739
Oberfläche1740
Quellcode1743
Test1743
36 Erweiterte Grafikausgabe1744
36.1 Transformieren mit der Matrix-Klasse1744
36.1.1 Übersicht1744
36.1.2 Translation1745
36.1.3 Skalierung1745
36.1.4 Rotation1746
36.1.5 Scherung1746
36.1.6 Zuweisen der Matrix1747
36.2 Low-Level-Grafikmanipulationen1747
36.2.1 Worauf zeigt Scan0?1748
36.2.2 Anzahl der Spalten bestimmen1749
36.2.3 Anzahl der Zeilen bestimmen1750
36.2.4 Zugriff im Detail (erster Versuch)1750
36.2.5 Zugriff im Detail (zweiter Versuch)1752
Weiter optimieren1753
36.2.6 Invertieren1754
36.2.7 In Graustufen umwandeln1755
36.2.8 Heller/Dunkler1756
36.2.9 Kontrast1757
36.2.10 Gamma-Wert1758
36.2.11 Histogramm spreizen1759
36.2.12 Ein universeller Grafikfilter1761
Beispiel: Eine universelle Filter-Klasse entwickeln1761
Die Klasse GrafikFilter im Einsatz1764
36.3 Fortgeschrittene Techniken1765
36.3.1 Flackerfrei dank Double Buffering1765
Eine Puffer-Bitmap erzeugen1765
Und was ist mit der PictureBox?1766
36.3.2 Animationen1767
Vorbereiten des Ausgabeobjekts1767
Styles bei Controls setzen1768
Die eigentliche Grafikausgabe1768
Bemerkungen1770
36.3.3 Animated GIFs1770
Wie lernen die Bilder das Laufen?1771
36.3.4 Auf einzelne GIF-Frames zugreifen1773
Wiedergabe einzelner Frames1773
Erzeugen eines Bitmap-Strips1774
36.3.5 Transparenz realisieren1774
36.3.6 Eine Grafik maskieren1776
36.3.7 JPEG-Qualität beim Sichern bestimmen1777
36.4 Grundlagen der 3D-Vektorgrafik1778
36.4.1 Datentypen für die Verwaltung1779
36.4.2 Eine universelle 3D-Grafik-Klasse1780
36.4.3 Grundlegende Betrachtungen1781
Drehwinkel1781
Darstellungsmöglichkeiten1782
36.4.4 Translation1784
36.4.5 Streckung/Skalierung1784
36.4.6 Rotation1785
36.4.7 Die eigentlichen Zeichenroutinen1787
Ausgabe einer Linie1787
Ausgabe eines Koordinatensystems1788
36.5 Und doch wieder GDI-Funktionen ...1790
36.5.1 Am Anfang war das Handle ...1790
36.5.2 Gerätekontext (Device Context Types)1792
Formular-DC über Graphics-Objekt erzeugen1793
Formular-DC mit GetDC erzeugen1794
36.5.3 Koordinatensysteme und Abbildungsmodi1794
36.5.4 Zeichenwerkzeuge/Objekte1799
Erzeugen und Parametrieren der Objekte1800
36.5.5 Bitmaps1801
Bitmaps kopieren1803
Bitmaps skalieren1804
36.6 Praxisbeispiele1805
36.6.1 Die Transformationsmatrix verstehen1805
Oberfläche1805
Quelltext1806
Test1808
36.6.2 Eine 3D-Grafikausgabe in Aktion1808
Oberfläche1808
Quelltext1808
Test/Bemerkungen1810
36.6.3 Einen Fenster-Screenshot erzeugen1811
Oberfläche1811
Quelltext1811
Test1813
Bemerkung1813
37 Ressourcen/Lokalisierung1814
37.1 Manifestressourcen1814
37.1.1 Erstellen von Manifestressourcen1814
37.1.2 Zugriff auf Manifestressourcen1816
Namensgebung eingebetteter Ressourcen1816
Auflisten aller eingebetteten Ressourcen1816
Die Inhalte eingebetteter Ressourcen auslesen1817
37.2 Typisierte Resourcen1817
37.2.1 Erzeugen von .resources-Dateien1817
37.2.2 Hinzufügen der .resources-Datei zum Projekt1818
37.2.3 Zugriff auf die Inhalte von .resources-Dateien1818
Bemerkungen zum Zugriff auf .resources-Dateien1819
37.2.4 ResourceManager direkt aus der .resources-Datei erzeugen1819
Bemerkungen1820
37.2.5 Was sind .resx-Dateien?1820
37.3 Streng typisierte Ressourcen1820
37.3.1 Erzeugen streng typisierter Ressourcen1820
37.3.2 Verwenden streng typisierter Ressourcen1821
37.3.3 Streng typisierte Ressourcen per Reflection auslesen1821
37.4 Anwendungen lokalisieren1824
37.4.1 Localizable und Language1824
37.4.2 Beispiel "Landesfahnen"1824
37.4.3 Einstellen der aktuellen Kultur zur Laufzeit1827
Bemerkungen1828
37.5 Praxisbeispiel1829
37.5.1 Betrachter für Manifestressourcen1829
Oberfläche1829
Quellcode Form11829
Test1831
38 Komponentenentwicklung1832
38.1 Überblick1832
38.2 Benutzersteuerelement1833
38.2.1 Entwickeln einer Auswahl-ListBox1833
Oberflächendesign1834
Implementieren der Programmlogik1834
38.2.2 Komponente verwenden1835
38.3 Benutzerdefiniertes Steuerelement1836
38.3.1 Entwickeln eines BlinkLabels1836
Oberflächendesign1837
Festlegen des Typs des Vorfahren1837
Implementieren der Programmlogik1838
38.3.2 Verwenden der Komponente1838
38.4 Komponentenklasse1839
38.5 Eigenschaften1840
38.5.1 Einfache Eigenschaften1840
38.5.2 Schreib-/Lesezugriff (Get/Set)1840
38.5.3 Nur Lese-Eigenschaft (ReadOnly)1841
38.5.4 Nur-Schreibzugriff (WriteOnly)1841
38.5.5 Hinzufügen von Beschreibungen1842
38.5.6 Ausblenden im Eigenschaftenfenster1842
38.5.7 Einfügen in Kategorien1843
38.5.8 Default-Wert einstellen1843
38.5.9 Standard-Eigenschaft1844
38.5.10 Wertebereichsbeschränkung und Fehlerprüfung1845
38.5.11 Eigenschaften von Aufzählungstypen1846
38.5.12 Standard Objekt-Eigenschaften1847
38.5.13 Eigene Objekt-Eigenschaften1848
38.6 Methoden1850
38.6.1 Konstruktor1851
38.6.2 Class-Konstruktor1852
38.6.3 Destruktor1853
38.6.4 Aufruf des Basisklassen-Konstruktors1854
38.6.5 Aufruf von Basisklassen-Methoden1854
38.7 Ereignisse (Events)1854
38.7.1 Ereignis mit Standardargument definieren1855
38.7.2 Ereignis mit eigenen Argumenten1856
38.7.3 Ein Default-Ereignis festlegen1857
38.7.4 Mit Ereignissen auf Windows-Messages reagieren1857
38.8 Weitere Themen1859
38.8.1 Wohin mit der Komponente?1859
38.8.2 Assembly-Informationen festlegen1860
38.8.3 Assemblies signieren1862
Erstellen eines AssemblyKey-File1862
38.8.4 Komponenten-Ressourcen einbetten1863
38.8.5 Der Komponente ein Icon zuordnen1863
Icon erstellen1863
38.8.6 Den Designmodus erkennen1864
38.8.7 Komponenten lizenzieren1864
Verwendung der LicFileLicenseProvider-Klasse1865
Ableiten der LicFileLicenseProvider-Klasse1867
Bemerkung1868
38.9 Praxisbeispiele1869
38.9.1 AnimGif für die Anzeige von Animationen1869
Oberfläche/Ressourcen1869
Quelltext1870
Test1871
38.9.2 Eine FontComboBox entwickeln1871
Quelltext1871
Test1873
38.9.3 Das PropertyGrid verwenden1874
Oberfläche1874
Quelltext1874
Test1875
39 ASP.NET-Einführung1878
39.1 ASP.NET für Ein- und Umsteiger1878
39.1.1 ASP – der Blick zurück1878
39.1.2 Was ist bei ASP.NET anders?1879
39.1.3 Was gibt es noch in ASP.NET?1881
39.1.4 Vorteile von ASP.NET gegenüber ASP1882
39.1.5 Voraussetzungen für den Einsatz von ASP.NET1883
39.1.6 Und was hat das alles mit Visual Basic zu tun?1883
Grundsätzlicher Projektaufbau1884
39.2 Unsere erste Web-Anwendung1886
39.2.1 Visueller Entwurf der Bedienoberfläche1886
39.2.2 Zuweisen der Objekteigenschaften1888
39.2.3 Verknüpfen der Objekte mit Ereignissen1889
39.2.4 Programm kompilieren und testen1891
39.3 Die ASP.NET-Projektdateien1892
39.3.1 ASP.NET-Website1893
39.3.2 ASP.NET-Web-Anwendungen1894
39.3.3 ASPX-Datei(en)1894
39.3.4 Die aspx.vb-Datei(en)1897
39.3.5 Die Datei Global.asax1897
39.3.6 Das Startformular1898
39.3.7 Die Datei Web.config1898
39.3.8 Masterpages (master-Dateien)1901
39.3.9 Sitemap (Web.sitemap)1901
39.3.10 Benutzersteuerelemente (ascx-Dateien)1902
39.3.11 Die Web-Projekt-Verzeichnisse1902
39.4 Lernen am Beispiel1903
39.4.1 Erstellen des Projekts1903
39.4.2 Oberflächengestaltung1904
Formular-Titel setzen1905
39.4.3 Ereignisprogrammierung1905
39.4.4 Ein Fehler, was nun?1906
Einfache Fehlerbehandlung1907
39.4.5 Ereignisse von Textboxen1908
39.4.6 Ein gemeinsamer Ereignis-Handler1908
39.4.7 Eingabefokus setzen1909
39.4.8 Ausgaben in einer Tabelle1909
39.4.9 Scrollen der Anzeige1912
39.4.10 Zusammenspiel mehrerer Formulare1912
Globale Variablen?1913
Das Page_Load-Ereignis1913
39.4.11 Umleiten bei Direktaufruf1914
39.4.12 Ärger mit den Cookies1915
39.4.13 Export auf den IIS1916
39.5 Tipps & Tricks1917
39.5.1 Nachinstallieren IIS 7 bzw. 7.5 (Windows 7)1917
Nachinstallieren1917
ASP.NET registrieren1918
39.5.2 Nachinstallieren IIS8 (Windows 8)1918
40 Übersicht ASP.NET-Controls1920
40.1 Einfache Steuerelemente im Überblick1920
40.1.1 Label1920
AccessKey/AssociatedControlID1921
Datenbindung1921
40.1.2 TextBox1922
40.1.3 Button, ImageButton, LinkButton1923
Click-Ereignis1923
OnClientClick-Eigenschaft1923
PostbackUrl-Eigenschaft1924
40.1.4 CheckBox, RadioButton1924
40.1.5 CheckBoxList, BulletList, RadioButtonList1925
Datenbindung1925
BulletList1926
40.1.6 Table1926
40.1.7 Hyperlink1928
40.1.8 Image, ImageMap1928
40.1.9 Calendar1930
40.1.10 Panel1931
40.1.11 HiddenField1931
40.1.12 Substitution1932
40.1.13 XML1933
Die XML-Daten1933
Die Transformationsdateien1934
Verwendung und Test1934
40.1.14 FileUpload1935
40.1.15 AdRotator1936
40.2 Steuerelemente für die Seitennavigation1937
40.2.1 Mehr Übersicht mit Web.Sitemap1937
40.2.2 Menu1939
Datenbindung an eine SiteMap1940
Menü ohne Datenbindung1941
40.2.3 TreeView1942
TreeView ohne Datenbindung1943
40.2.4 SiteMapPath1945
40.2.5 MultiView, View1946
40.2.6 Wizard1947
40.3 Webseitenlayout/-design1949
40.3.1 Masterpages1949
Masterpage1950
Content-Seiten1951
40.3.2 Themes/Skins1952
Zuweisen des aktiven Theme1953
Skin-Datei1953
Stylesheet1954
Grafiken1954
40.3.3 Webparts1955
40.4 Die Validator-Controls1956
40.4.1 Übersicht1956
40.4.2 Wo findet die Fehlerprüfung statt?1957
40.4.3 Verwendung1957
40.4.4 RequiredFieldValidator1958
40.4.5 CompareValidator1959
40.4.6 RangeValidator1961
40.4.7 RegularExpressionValidator1961
40.4.8 CustomValidator1962
Clientseitige Validierung1963
Serverseitige Validierung1963
40.4.9 ValidationSummary1965
40.4.10 Weitere Möglichkeiten1966
Validierung zeitweise verhindern1966
ValidationGroup bilden1966
Eingabefokus setzen1966
40.5 Praxisbeispiele1966
40.5.1 Themes und Skins verstehen1966
Oberfläche1967
Projekt1967
Skin bearbeiten1968
Stylesheet bearbeiten1968
Quelltext1969
Test1970
40.5.2 Masterpages verwenden1971
Oberfläche (Masterpage)1971
Oberfläche (Contentpage)1972
Quelltext1972
Test1973
40.5.3 Webparts verwenden1974
Vorbereiten der Portalseite1974
User Control programmieren1974
Inhalte für die Webzones definieren1975
Programmieren des Werkzeugkastens1976
41 ASP.NET-Datenbindung1980
41.1 Einstiegsbeispiel1980
41.1.1 Erstellen der ASP.NET-Website1980
Datenbank hinzufügen1981
GridView hinzufügen1982
GridView an Datenquelle anbinden1982
Test1984
41.2 Einführung1985
41.2.1 Konzept1985
41.2.2 Übersicht DataSource-Steuerelemente1986
41.3 SQLDataSource1987
41.3.1 Datenauswahl mit Parametern1989
41.3.2 Parameter für INSERT, UPDATE und DELETE1990
41.3.3 Methoden1992
41.3.4 Caching1993
41.3.5 Aktualisieren/Refresh1994
41.4 AccessDataSource1994
41.5 ObjectDataSource1994
41.5.1 Verbindung zwischen Objekt und DataSource1994
41.5.2 Ein Beispiel sorgt für Klarheit1996
41.5.3 Geschäftsobjekte in einer Session verwalten2000
41.6 SitemapDataSource2002
41.7 LinqDataSource2003
41.7.1 Bindung von einfachen Collections2003
41.7.2 Bindung eines LINQ to SQL-DataContext2004
41.8 EntityDataSource2006
41.8.1 Entity Data Model erstellen2007
41.8.2 EntityDataSource anbinden2009
41.8.3 Datenmenge filtern2012
41.9 XmlDataSource2012
41.10 QueryExtender2014
41.10.1 Grundlagen2014
41.10.2 Suchen2015
41.10.3 Sortieren2017
41.11 GridView2018
41.11.1 Auswahlfunktion (Zeilenauswahl)2018
41.11.2 Auswahl mit mehrspaltigem Index2019
41.11.3 Hyperlink-Spalte für Detailansicht2019
41.11.4 Spalten erzeugen2020
41.11.5 Paging realisieren2021
41.11.6 Edit, Update, Delete2023
41.11.7 Keine Daten, was tun?2024
41.12 DetailsView2024
41.13 FormView2026
Datenbindung im Detail2027
41.14 DataList2029
41.14.1 Bearbeitungsfunktionen implementieren2029
41.14.2 Layout verändern2031
41.15 Repeater2031
41.16 ListView2033
41.17 Typisierte Datenbindung2033
41.18 Model Binding2034
41.19 Chart2036
42 ASP.NET-Objekte/-Techniken2038
42.1 Wichtige ASP.NET-Objekte2038
42.1.1 HTTPApplication2038
42.1.2 Application2041
42.1.3 Session2042
Session-Variablen2042
Beenden einer Session2043
Ereignisse2043
42.1.4 Page2044
Eigenschaften2044
Methoden2045
Ereignisse2046
42.1.5 Request2046
Informationen über den Browser ermitteln2047
QueryString-Parameter auslesen2049
42.1.6 Response2049
Eigenschaften2050
Methoden2050
Textausgabe2050
Bilder/Dateien zum Client senden2051
Dynamisch erzeugte Grafiken senden2051
Neue Seiten aufrufen2053
Wir geben zur Protokoll ...2053
42.1.7 Server2054
MapPath2054
MachineName2054
Transfer2054
Execute2054
42.1.8 Cookies verwenden2055
User2057
42.2 ASP.NET-Fehlerbehandlung2057
42.2.1 Fehler beim Entwurf2057
42.2.2 Laufzeitfehler2058
42.2.3 Eine eigene Fehlerseite2059
42.2.4 Fehlerbehandlung im Web Form2060
42.2.5 Fehlerbehandlung in der Anwendung2061
42.2.6 Alternative Fehlerseite einblenden2062
42.2.7 Lokale Fehlerbehandlung2063
42.2.8 Seite nicht gefunden! – Was nun?2064
42.3 E-Mail-Versand in ASP.NET2064
42.3.1 Übersicht2064
42.3.2 Mail-Server bestimmen2065
42.3.3 Einfache Text-E-Mails versenden2066
Variante 12066
Variante 22067
42.3.4 E-Mails mit Dateianhang2067
42.4 Sicherheit von Webanwendungen2068
42.4.1 Authentication2068
Anonyme Anmeldung2068
Forms Authentication2069
Windows Authentication2069
42.4.2 Forms Authentication realisieren2070
Login-Dialog2070
Die Änderungen in der Web.config2071
Test2072
Weitere Möglichkeiten der Authentifizierung2073
42.4.3 Impersonation2073
42.4.4 Authorization2074
File Authorization2075
URL Authorization2075
42.4.5 Administrieren der Website2077
Voraussetzung2077
ASP.NET-Konfigurationsoberfläche2077
Auswahl des Authentifizierungstyps2078
Neuen Nutzer erstellen2079
Rechte einschränken2080
42.4.6 Steuerelemente für das Login-Handling2080
Login2081
LoginStatus2082
LoginName2082
LoginView2082
PasswortRecovery2083
CreateUserWizard2084
ChangePasswort2085
42.4.7 Programmieren der Sicherheitseinstellungen2085
42.5 AJAX in ASP.NET-Anwendungen2087
42.5.1 Was ist eigentlich AJAX und was kann es?2087
42.5.2 Die AJAX-Controls2088
ScriptManager2088
UpdatePanel2089
UpdateProgress2090
Timer2091
42.5.3 AJAX-Control-Toolkit2091
42.6 User Controls/Webbenutzersteuerelemente2093
User Controls2093
Custom Controls2093
42.6.1 Ein simples Einstiegsbeispiel2094
Entwurf2094
Quellcode2095
Einbindung2095
Test2096
Eigene Eigenschaften definieren2096
Fazit2097
42.6.2 Dynamische Grafiken im User Control anzeigen2097
Dynamisches Senden der Grafik2097
Entwurf des Controls2098
Verwendung und Test2100
42.6.3 Grafikausgaben per User Control realisieren2102
Das User Control2102
Die Einbindung/Programmierung2103
Test2104
43 Silverlight-Entwicklung2108
43.1 Einführung2108
43.1.1 Zielplattformen2109
43.1.2 Silverlight-Applikationstypen2109
Silverlight-Anwendung2110
Silverlight-Navigationsanwendung2110
Silverlight Out-of-Browser-Anwendung2111
43.1.3 Wichtige Unterschiede zu den WPF-Anwendungen2111
Einschränkungen durch das Silverlight-Konzept2111
Unterschiede durch unterschiedliche Codebasis2112
43.1.4 Vor- und Nachteile von Silverlight-Anwendungen2113
WPF-ClickOnce-Anwendungen2113
ASP.NET/AJAX2113
FLASH2114
Fazit2114
43.1.5 Entwicklungstools2115
43.1.6 Installation auf dem Client2115
Updates/Deinstallation2116
43.2 Die Silverlight-Anwendung im Detail2116
43.2.1 Ein kleines Beispielprojekt2117
43.2.2 Das Application Package und das Test-Web2119
.xap-Package2119
Silverlight.js2119
...TestPage.aspx & ...TestPage.html2119
43.3 Die Projektdateien im Überblick2122
43.3.1 Projektverwaltung mit App.xaml & App.xaml.vb2123
Startup2124
Exit2124
UnhandledException2125
Weitere Eigenschaften und Methoden der Application-Klasse2125
43.3.2 MainPage.xaml & MainPage.xaml.vb2125
43.3.3 AssemblyInfo.vb2126
43.4 Fenster und Seiten in Silverlight2126
43.4.1 Das Standardfenster2126
43.4.2 Untergeordnete Silverlight-Fenster2127
43.4.3 UserControls für die Anzeige von Detaildaten2129
Ein-/Ausblenden von UserControls2129
Hinzufügen/Entfernen von UserControls2130
43.4.4 Echte Windows2130
43.4.5 Navigieren in Silverlight-Anwendungen2131
Projekt erzeugen2131
Die Page-Klasse2132
Der Navigations-Frame2134
43.5 Datenbanken/Datenbindung2136
43.5.1 ASP.NET-Webdienste/WCF-Dienste2137
Einfügen der SQL Server-Datenbank2138
Erstellen des LINQ to SQL-Datenmodells2138
Erstellen des ASP.NET-Webdienstes2140
Alternative: Erstellen eines WCF Dienstes2141
Einbinden der Dienste in das Silverlight-Projekt2142
Konfigurieren der Silverlight-Oberfläche2143
Abrufen der Daten2144
Zusammenfassung2145
43.5.2 WCF Data Services2145
Grundlagen2146
Einfügen der SQL Server-Datenbank2148
Erstellen des Entity Data Models2149
Erstellen des WCF Data Service2149
Einbinden des WCF Data Service in das Silverlight-Projekt2152
Konfigurieren der Silverlight-Oberfläche2152
Abrufen der Daten2152
Bearbeiten der Daten2153
Arbeiten mit LINQ und Erweiterungsmethoden2154
43.6 Isolierter Speicher2156
43.6.1 Grundkonzept2156
43.6.2 Das virtuelle Dateisystem verwalten2157
Wieviel Platz ist verfügbar?2157
Ich will mehr!2158
Unterverzeichnisse erzeugen2158
Anzeige von Dateien und Verzeichnissen2158
Dateien/Verzeichnisse löschen2159
43.6.3 Arbeiten mit Dateien2160
Schreiben2160
Lesen2160
43.7 Fulltrust-Anwendungen2161
43.8 Praxisbeispiele2164
43.8.1 Eine Out-of-Browser-Applikation realisieren2164
Vorgehensweise2164
Installation2166
Bemerkungen2167
43.8.2 Out-of-Browser-Anwendung aktualisieren2168
Quellcode2168
43.8.3 Testen auf aktive Internetverbindung2169
Quellcode2169
43.8.4 Auf Out-of-Browser-Anwendung testen2170
Quellcode2170
43.8.5 Den Browser bestimmen2170
Quellcode2170
Test2171
43.8.6 Parameter an das Plug-in übergeben2171
Oberfläche2171
Quellcode (MainPage.xaml.vb)2171
Quellcode (App.xaml.vb)2172
Quellcode der umgebenden HTML-Seite2172
Test2173
43.8.7 Auf den QueryString zugreifen2173
Oberfläche2173
Quellcode2173
Test2174
43.8.8 Timer in Silverlight nutzen2174
Oberfläche2174
Quellcode2174
Test2175
43.8.9 Dateien lokal speichern2175
Oberfläche2175
Quellcode2175
Bemerkung2176
43.8.10 Drag & Drop realisieren2176
Oberfläche2176
Quelltext2177
Test2177
43.8.11 Auf die Zwischenablage zugreifen2178
Oberfläche2178
Quelltext2178
Test2179
43.8.12 Weitere Fenster öffnen2180
Oberfläche (MainPage)2180
Quellcode (MainPage.xaml.vb)2180
Oberfläche (SilverlightControl1)2181
Quellcode (SilverlightControl1.xaml.vb)2181
Test2182
Bemerkungen2182
Index2184

Weitere E-Books zum Thema: Programmiersprachen - Softwareentwicklung

ASP.NET Shortcut

E-Book ASP.NET Shortcut
Format: PDF

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

ASP.NET Shortcut

E-Book ASP.NET Shortcut
Format: PDF

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

ASP.NET Shortcut

E-Book ASP.NET Shortcut
Format: PDF

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

Programmieren lernen in PHP 5

E-Book Programmieren lernen in PHP 5
Format: PDF

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

Mathematik für Informatiker

E-Book Mathematik für Informatiker
Format: PDF

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

Mathematik für Informatiker

E-Book Mathematik für Informatiker
Format: PDF

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

Mathematik für Informatiker

E-Book Mathematik für Informatiker
Format: PDF

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

Weitere Zeitschriften

Berufsstart Gehalt

Berufsstart Gehalt

»Berufsstart Gehalt« erscheint jährlich zum Sommersemester im Mai mit einer Auflage von 50.000 Exemplaren und ermöglicht Unternehmen sich bei Studenten und Absolventen mit einer ...

crescendo

crescendo

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

Das Grundeigentum

Das Grundeigentum

Das Grundeigentum - Zeitschrift für die gesamte Grundstücks-, Haus- und Wohnungswirtschaft. Für jeden, der sich gründlich und aktuell informieren will. Zu allen Fragen rund um die Immobilie. Mit ...

Deutsche Tennis Zeitung

Deutsche Tennis Zeitung

Die DTZ – Deutsche Tennis Zeitung bietet Informationen aus allen Bereichen der deutschen Tennisszene –sie präsentiert sportliche Highlights, analysiert Entwicklungen und erläutert ...

DHS

DHS

Die Flugzeuge der NVA Neben unser F-40 Reihe, soll mit der DHS die Geschichte der "anderen" deutschen Luftwaffe, den Luftstreitkräften der Nationalen Volksarmee (NVA-LSK) der ehemaligen DDR ...

e-commerce magazin

e-commerce magazin

e-commerce magazin Die Redaktion des e-commerce magazin versteht sich als Mittler zwischen Anbietern und Markt und berichtet unabhängig, kompetent und kritisch über ...

F- 40

F- 40

Die Flugzeuge der Bundeswehr, Die F-40 Reihe behandelt das eingesetzte Fluggerät der Bundeswehr seit dem Aufbau von Luftwaffe, Heer und Marine. Jede Ausgabe befasst sich mit der genaue Entwicklungs- ...