Visual Basic 2015 - Grundlagen, Profiwissen und Rezepte

Walter Doberenz, Thomas Gewinnus

Visual Basic 2015 - Grundlagen, Profiwissen und Rezepte

2015

1195 Seiten

Format: PDF, Online Lesen

E-Book: €  49,99

E-Book kaufen

E-Book kaufen

ISBN: 9783446446052

 

Inhaltsverzeichnis

6

Vorwort

46

Teil I: Grundlagen

50

1 Einstieg in Visual Studio 2015

52

1.1 Die Installation von Visual Studio 2015

52

1.1.1 Überblick über die Produktpalette

52

1.1.2 Anforderungen an Hard- und Software

53

1.2 Unser allererstes VB-Programm

54

1.2.1 Vorbereitungen

54

1.2.2 Programm schreiben

56

1.2.3 Programm kompilieren und testen

56

1.2.4 Einige Erläuterungen zum Quellcode

57

1.2.5 Konsolenanwendungen sind out

58

1.3 Die Windows-Philosophie

58

1.3.1 Mensch-Rechner-Dialog

59

1.3.2 Objekt- und ereignisorientierte Programmierung

59

1.3.3 Windows-Programmierung unter Visual Studio 2015

60

1.4 Die Entwicklungsumgebung Visual Studio 2015

62

1.4.1 Neues Projekt

62

1.4.2 Die wichtigsten Fenster

63

1.5 Microsofts .NET-Technologie

65

1.5.1 Zur Geschichte von .NET

65

1.5.2 .NET-Features und Begriffe

67

1.6 Wichtige Neuigkeiten in Visual Studio 2015

75

1.6.1 Entwicklungsumgebung

75

1.6.2 Neue VB-Sprachfeatures

75

1.6.3 Code-Editor

75

1.6.4 NET Framework 4.6

76

1.7 Praxisbeispiele

76

1.7.1 Windows-Anwendung für Einsteiger

76

1.7.2 Windows-Anwendung für fortgeschrittene Einsteiger

80

2 Einführung in Visual Basic

88

2.1 Grundbegriffe

88

2.1.1 Anweisungen

88

2.1.2 Bezeichner

89

2.1.3 Kommentare

90

2.1.4 Zeilenumbruch

91

2.2 Datentypen, Variablen und Konstanten

93

2.2.1 Fundamentale Typen

93

2.2.2 Wertetypen versus Verweistypen

94

2.2.3 Benennung von Variablen

94

2.2.4 Deklaration von Variablen

95

2.2.5 Typinferenz

98

2.2.6 Konstanten deklarieren

98

2.2.7 Gültigkeitsbereiche von Deklarationen

99

2.2.8 Lokale Variablen mit Dim

99

2.2.9 Lokale Variablen mit Static

100

2.2.10 Private globale Variablen

100

2.2.11 Public Variablen

101

2.3 Wichtige Datentypen im Überblick

101

2.3.1 Byte, Short, Integer, Long

101

2.3.2 Single, Double und Decimal

102

2.3.3 Char und String

102

2.3.4 Date

103

2.3.5 Boolean

104

2.3.6 Object

104

2.4 Konvertieren von Datentypen

105

2.4.1 Implizite und explizite Konvertierung

105

2.4.2 Welcher Datentyp passt zu welchem?

106

2.4.3 Konvertierungsfunktionen

107

2.4.4 CType-Funktion

108

2.4.5 Konvertieren von Strings

108

2.4.6 Die Convert-Klasse

110

2.4.7 Die Parse-Methode

110

2.4.8 Boxing und Unboxing

111

2.4.9 TryCast-Operator

112

2.4.10 Nullable Types

112

2.5 Operatoren

113

2.5.1 Arithmetische Operatoren

113

2.5.2 Zuweisungsoperatoren

114

2.5.3 Logische Operatoren

115

2.5.4 Vergleichsoperatoren

116

2.5.5 Rangfolge der Operatoren

116

2.6 Kontrollstrukturen

117

2.6.1 Verzweigungsbefehle

117

2.6.2 Schleifenanweisungen

120

2.7 Benutzerdefinierte Datentypen

121

2.7.1 Enumerationen

121

2.7.2 Strukturen

122

2.8 Nutzerdefinierte Funktionen/Prozeduren

125

2.8.1 Deklaration und Syntax

125

2.8.2 Parameterübergabe allgemein

127

2.8.3 Übergabe mit ByVal und ByRef

128

2.8.4 Optionale Parameter

129

2.8.5 Überladene Funktionen/Prozeduren

129

2.9 Praxisbeispiele

130

2.9.1 Vom PAP zum Konsolen-Programm

130

2.9.2 Vom Konsolen- zum Windows-Programm

132

2.9.3 Schleifenanweisungen kennen lernen

134

2.9.4 Methoden überladen

137

2.9.5 Eine Iterationsschleife verstehen

139

2.9.6 Anwendungen von C# nach Visual Basic portieren

142

3 OOP-Konzepte

150

3.1 Strukturierter versus objektorientierter Entwurf

150

3.1.1 Was bedeutet strukturierte Programmierung?

150

3.1.2 Was heißt objektorientierte Programmierung?

151

3.2 Grundbegriffe der OOP

152

3.2.1 Objekt, Klasse, Instanz

152

3.2.2 Kapselung und Wiederverwendbarkeit

153

3.2.3 Vererbung und Polymorphie

153

3.2.4 Sichtbarkeit von Klassen und ihren Mitgliedern

154

3.2.5 Allgemeiner Aufbau einer Klasse

155

3.3 Ein Objekt erzeugen

156

3.3.1 Referenzieren und Instanziieren

157

3.3.2 Klassische Initialisierung

158

3.3.3 Objekt-Initialisierer

158

3.3.4 Arbeiten mit dem Objekt

158

3.3.5 Zerstören des Objekts

159

3.4 OOP-Einführungsbeispiel

159

3.4.1 Vorbereitungen

159

3.4.2 Klasse definieren

160

3.4.3 Objekt erzeugen und initialisieren

161

3.4.4 Objekt verwenden

161

3.4.5 Unterstützung durch die IntelliSense

161

3.4.6 Objekt testen

162

3.4.7 Warum unsere Klasse noch nicht optimal ist

163

3.5 Eigenschaften

163

3.5.1 Eigenschaften kapseln

163

3.5.2 Eigenschaften mit Zugriffsmethoden kapseln

166

3.5.3 Lese-/Schreibschutz für Eigenschaften

167

3.5.4 Statische Eigenschaften

168

3.5.5 Selbst implementierende Eigenschaften

169

3.6 Methoden

170

3.6.1 Öffentliche und private Methoden

170

3.6.2 Überladene Methoden

171

3.6.3 Statische Methoden

172

3.7 Ereignisse

173

3.7.1 Ereignise deklarieren

173

3.7.2 Ereignis auslösen

174

3.7.3 Ereignis auswerten

174

3.7.4 Benutzerdefinierte Ereignisse (Custom Events)

176

3.8 Arbeiten mit Konstruktor und Destruktor

179

3.8.1 Der Konstruktor erzeugt das Objekt

179

3.8.2 Bequemer geht’s mit einem Objekt-Initialisierer

181

3.8.3 Destruktor und Garbage Collector räumen auf

182

3.8.4 Mit Using den Lebenszyklus des Objekts kapseln

184

3.9 Vererbung und Polymorphie

185

3.9.1 Vererbungsbeziehungen im Klassendiagramm

185

3.9.2 Überschreiben von Methoden (Method-Overriding)

187

3.9.3 Klassen implementieren

187

3.9.4 Objekte implementieren

192

3.9.5 Ausblenden von Mitgliedern durch Vererbung

193

3.9.6 Allgemeine Hinweise und Regeln zur Vererbung

195

3.9.7 Polymorphe Methoden

196

3.10 Besondere Klassen und Features

198

3.10.1 Abstrakte Klassen

198

3.10.2 Abstrakte Methoden

199

3.10.3 Versiegelte Klassen

199

3.10.4 Partielle Klassen

200

3.10.5 Die Basisklasse System.Object

202

3.10.6 Property-Accessors

203

3.10.7 Nullbedingter Operator

203

3.11 Schnittstellen (Interfaces)

204

3.11.1 Definition einer Schnittstelle

204

3.11.2 Implementieren einer Schnittstelle

205

3.11.3 Abfragen, ob eine Schnittstelle vorhanden ist

206

3.11.4 Mehrere Schnittstellen implementieren

206

3.11.5 Schnittstellenprogrammierung ist ein weites Feld

206

3.12 Praxisbeispiele

207

3.12.1 Eigenschaften sinnvoll kapseln

207

3.12.2 Eine statische Klasse anwenden

210

3.12.3 Vom fetten zum dünnen Client

212

3.12.4 Schnittstellenvererbung verstehen

221

3.12.5 Aggregation und Vererbung gegenüberstellen

225

3.12.6 Eine Klasse zur Matrizenrechnung entwickeln

231

3.12.7 Rechner für komplexe Zahlen

237

3.12.8 Formel-Rechner mit dem CodeDOM

245

3.12.9 Einen Funktionsverlauf grafisch darstellen

250

3.12.10 Sortieren mit IComparable/IComparer

254

3.12.11 Objektbäume in generischen Listen abspeichern

259

3.12.12 OOP beim Kartenspiel erlernen

265

4 Arrays, Strings, Funktionen

270

4.1 Datenfelder (Arrays)

270

4.1.1 Ein Array deklarieren

270

4.1.2 Zugriff auf Array-Elemente

271

4.1.3 Oberen Index ermitteln

271

4.1.4 Explizite Arraygrenzen

271

4.1.5 Arrays erzeugen und initialisieren

271

4.1.6 Zugriff mittels Schleife

272

4.1.7 Mehrdimensionale Arrays

273

4.1.8 Dynamische Arrays

274

4.1.9 Zuweisen von Arrays

275

4.1.10 Arrays aus Strukturvariablen

276

4.1.11 Löschen von Arrays

277

4.1.12 Eigenschaften und Methoden von Arrays

277

4.1.13 Übergabe von Arrays

280

4.2 Zeichenkettenverarbeitung

281

4.2.1 Strings zuweisen

281

4.2.2 Eigenschaften und Methoden eines Strings

281

4.2.3 Kopieren eines Strings in ein Char-Array

284

4.2.4 Wichtige (statische) Methoden der String-Klasse

284

4.2.5 Die StringBuilder-Klasse

286

4.3 Reguläre Ausdrücke

289

4.3.1 Wozu braucht man reguläre Ausdrücke?

289

4.3.2 Eine kleine Einführung

290

4.3.3 Wichtige Methoden der Klasse Regex

290

4.3.4 Kompilierte reguläre Ausdrücke

292

4.3.5 RegexOptions-Enumeration

293

4.3.6 Metazeichen (Escape-Zeichen)

294

4.3.7 Zeichenmengen (Character Sets)

295

4.3.8 Quantifizierer

296

4.3.9 Zero-Width Assertions

297

4.3.10 Gruppen

301

4.3.11 Text ersetzen

301

4.3.12 Text splitten

302

4.4 Datums- und Zeitberechnungen

303

4.4.1 Grundlegendes

303

4.4.2 Wichtige Eigenschaften von DateTime-Variablen

304

4.4.3 Wichtige Methoden von DateTime-Variablen

305

4.4.4 Wichtige Mitglieder der DateTime-Struktur

306

4.4.5 Konvertieren von Datumstrings in DateTime-Werte

307

4.4.6 Die TimeSpan-Struktur

307

4.5 Vordefinierten Funktionen

309

4.5.1 Mathematik

309

4.5.2 Datums- und Zeitfunktionen

311

4.6 Zahlen formatieren

313

4.6.1 Die ToString-Methode

314

4.6.2 Die Format-Methode

315

4.6.3 Stringinterpolation

317

4.7 Praxisbeispiele

317

4.7.1 Zeichenketten verarbeiten

317

4.7.2 Zeichenketten mittels StringBuilder addieren

320

4.7.3 Reguläre Ausdrücke testen

324

4.7.4 Fehler bei mathematischen Operationen behandeln

326

4.7.5 Methodenaufrufe mit Array-Parametern

329

4.7.6 String in Array kopieren und umgekehrt

332

4.7.7 Ein Byte-Array in einen String konvertieren

334

4.7.8 Strukturvariablen in Arrays einsetzen

336

5 Weitere Sprachfeatures

340

5.1 Namespaces (Namensräume)

340

5.1.1 Ein kleiner Überblick

340

5.1.2 Die Imports-Anweisung

342

5.1.3 Namespace-Alias

342

5.1.4 Namespaces in Projekteigenschaften

343

5.1.5 Namespace Alias Qualifizierer

344

5.1.6 Eigene Namespaces einrichten

344

5.2 Überladen von Operatoren

345

5.2.1 Syntaxregeln

345

5.2.2 Praktische Anwendung

346

5.2.3 Konvertierungsoperatoren überladen

347

5.3 Auflistungen (Collections)

348

5.3.1 Beziehungen zwischen den Schnittstellen

348

5.3.2 IEnumerable

349

5.3.3 ICollection

350

5.3.4 IList

350

5.3.5 Iteratoren

350

5.3.6 Die ArrayList-Collection

351

5.3.7 Die Hashtable

352

5.4 Generische Datentypen

353

5.4.1 Wie es früher einmal war

353

5.4.2 Typsicherheit durch Generics

355

5.4.3 List-Collection ersetzt ArrayList

356

5.4.4 Über die Vorzüge generischer Collections

357

5.4.5 Typbeschränkungen durch Constraints

358

5.4.6 Collection-Initialisierer

359

5.4.7 Generische Methoden

359

5.5 Delegates

360

5.5.1 Delegates sind Methodenzeiger

360

5.5.2 Delegate-Typ definieren

361

5.5.3 Delegate-Objekt erzeugen

362

5.5.4 Delegates vereinfacht instanziieren

362

5.5.5 Relaxed Delegates

363

5.5.6 Anonyme Methoden

363

5.5.7 Lambda-Ausdrücke

364

5.5.8 Lambda-Ausdrücke in der Task Parallel Library

365

5.6 Dynamische Programmierung

367

5.6.1 Wozu dynamische Programmierung?

367

5.6.2 Das Prinzip der dynamischen Programmierung

367

5.6.3 Kovarianz und Kontravarianz

371

5.7 Weitere Datentypen

372

5.7.1 BigInteger

372

5.7.2 Complex

374

5.7.3 Tuple(Of T)

375

5.7.4 SortedSet(Of T)

375

5.8 Praxisbeispiele

377

5.8.1 ArrayList versus generische List

377

5.8.2 Delegates und Lambda Expressions

380

5.8.3 Mit dynamischem Objekt eine Datei durchsuchen

383

6 Einführung in LINQ

388

6.1 LINQ-Grundlagen

388

6.1.1 Die LINQ-Architektur

388

6.1.2 LINQ-Implementierungen

389

6.1.3 Anonyme Typen

389

6.1.4 Erweiterungsmethoden

391

6.2 Abfragen mit LINQ to Objects

392

6.2.1 Grundlegendes zur LINQ-Syntax

392

6.2.2 Zwei alternative Schreibweisen von LINQ-Abfragen

393

6.2.3 Übersicht der wichtigsten Abfrage-Operatoren

395

6.3 LINQ-Abfragen im Detail

396

6.3.1 Die Projektionsoperatoren Select und SelectMany

397

6.3.2 Der Restriktionsoperator Where

399

6.3.3 Die Sortierungsoperatoren OrderBy und ThenBy

399

6.3.4 Der Gruppierungsoperator GroupBy

401

6.3.5 Verknüpfen mit Join

402

6.3.6 Aggregat-Operatoren

403

6.3.7 Verzögertes Ausführen von LINQ-Abfragen

405

6.3.8 Konvertierungsmethoden

406

6.3.9 Abfragen mit PLINQ

406

6.4 Praxisbeispiele

409

6.4.1 Die Syntax von LINQ-Abfragen verstehen

409

6.4.2 Aggregat-Abfragen mit LINQ

412

6.4.3 LINQ im Schnelldurchgang erlernen

414

6.4.4 Strings mit LINQ abfragen und filtern

417

6.4.5 Duplikate aus einer Liste oder einem Array entfernen

418

6.4.6 Arrays mit LINQ initialisieren

421

6.4.7 Arrays per LINQ mit Zufallszahlen füllen

423

6.4.8 Einen String mit Wiederholmuster erzeugen

424

6.4.9 Mit LINQ Zahlen und Strings sortieren

426

6.4.10 Mit LINQ Collections von Objekten sortieren

427

6.4.11 Ergebnisse von LINQ-Abfragen in ein Array kopieren

429

Teil II: Technologien

430

7 Zugriff auf das Dateisystem

432

7.1 Grundlagen

432

7.1.1 Klassen für Verzeichnis- und Dateioperationen

433

7.1.2 Statische versus Instanzen-Klasse

433

7.2 Übersichten

434

7.2.1 Methoden der Directory-Klasse

434

7.2.2 Methoden eines DirectoryInfo-Objekts

435

7.2.3 Eigenschaften eines DirectoryInfo-Objekts

435

7.2.4 Methoden der File-Klasse

435

7.2.5 Methoden eines FileInfo-Objekts

436

7.2.6 Eigenschaften eines FileInfo-Objekts

437

7.3 Operationen auf Verzeichnisebene

437

7.3.1 Existenz eines Verzeichnisses/einer Datei feststellen

437

7.3.2 Verzeichnisse erzeugen und löschen

438

7.3.3 Verzeichnisse verschieben und umbenennen

439

7.3.4 Aktuelles Verzeichnis bestimmen

439

7.3.5 Unterverzeichnisse ermitteln

439

7.3.6 Alle Laufwerke ermitteln

440

7.3.7 Dateien kopieren und verschieben

441

7.3.8 Dateien umbenennen

442

7.3.9 Dateiattribute feststellen

442

7.3.10 Verzeichnis einer Datei ermitteln

444

7.3.11 Alle im Verzeichnis enthaltene Dateien ermitteln

444

7.3.12 Dateien und Unterverzeichnisse ermitteln

444

7.4 Zugriffsberechtigungen

445

7.4.1 ACL und ACE

445

7.4.2 SetAccessControl-Methode

446

7.4.3 Zugriffsrechte anzeigen

446

7.5 Weitere wichtige Klassen

447

7.5.1 Die Path-Klasse

447

7.5.2 Die Klasse FileSystemWatcher

448

7.6 Datei- und Verzeichnisdialoge

450

7.6.1 OpenFileDialog und SaveFileDialog

450

7.6.2 FolderBrowserDialog

452

7.7 Praxisbeispiele

453

7.7.1 Infos über Verzeichnisse und Dateien gewinnen

453

7.7.2 Die Verzeichnisstruktur in eine TreeView einlesen

456

7.7.3 Mit LINQ und RegEx Verzeichnisbäume durchsuchen

458

8 Dateien lesen und schreiben

464

8.1 Grundprinzip der Datenpersistenz

464

8.1.1 Dateien und Streams

464

8.1.2 Die wichtigsten Klassen

465

8.1.3 Erzeugen eines Streams

466

8.2 Dateiparameter

466

8.2.1 FileAccess

466

8.2.2 FileMode

466

8.2.3 FileShare

467

8.3 Textdateien

467

8.3.1 Eine Textdatei beschreiben bzw. neu anlegen

467

8.3.2 Eine Textdatei lesen

469

8.4 Binärdateien

471

8.4.1 Lese-/Schreibzugriff

471

8.4.2 Die Methoden ReadAllBytes und WriteAllBytes

471

8.4.3 BinaryReader/BinaryWriter erzeugen

472

8.5 Sequenzielle Dateien

472

8.5.1 Lesen und Schreiben von strukturierten Daten

472

8.5.2 Serialisieren von Objekten

473

8.6 Dateien verschlüsseln und komprimieren

474

8.6.1 Das Methodenpärchen Encrypt-/Decrypt

475

8.6.2 Verschlüsseln unter Windows Vista/7/8/10

475

8.6.3 Verschlüsseln mit der CryptoStream-Klasse

476

8.6.4 Dateien komprimieren

477

8.7 Memory Mapped Files

478

8.7.1 Grundprinzip

478

8.7.2 Erzeugen eines MMF

479

8.7.3 Erstellen eines Map View

479

8.8 Praxisbeispiele

480

8.8.1 Auf eine Textdatei zugreifen

480

8.8.2 Einen Objektbaum speichern

484

8.8.3 Ein Memory Mapped File (MMF) verwenden

491

8.8.4 Hex-Dezimal-Bytes-Konverter

493

8.8.5 Eine Datei verschlüsseln

497

8.8.6 Eine Datei komprimieren

500

8.8.7 Echte ZIP-Dateien erstellen

502

8.8.8 PDFs erstellen/exportieren

503

8.8.9 Eine CSV-Datei erstellen

507

8.8.10 Eine CSV-Datei mit LINQ lesen und auswerten

510

8.8.11 Einen korrekten Dateinamen erzeugen

512

9 Asynchrone Programmierung

514

9.1 Übersicht

514

9.1.1 Multitasking versus Multithreading

515

9.1.2 Deadlocks

516

9.1.3 Racing

516

9.2 Programmieren mit Threads

518

9.2.1 Einführungsbeispiel

518

9.2.2 Wichtige Thread-Methoden

519

9.2.3 Wichtige Thread-Eigenschaften

521

9.2.4 Einsatz der ThreadPool-Klasse

522

9.3 Sperrmechanismen

524

9.3.1 Threading ohne SyncLock

524

9.3.2 Threading mit SyncLock

525

9.3.3 Die Monitor-Klasse

528

9.3.4 Mutex

531

9.3.5 Methoden für die parallele Ausführung sperren

532

9.3.6 Semaphore

533

9.4 Interaktion mit der Programmoberfläche

534

9.4.1 Die Werkzeuge

535

9.4.2 Einzelne Steuerelemente mit Invoke aktualisieren

535

9.4.3 Mehrere Steuerelemente aktualisieren

536

9.4.4 Ist ein Invoke-Aufruf nötig?

537

9.4.5 Und was ist mit WPF?

537

9.5 Timer-Threads

539

9.6 Die BackgroundWorker-Komponente

540

9.7 Asynchrone Programmier-Entwurfsmuster

543

9.7.1 Kurzübersicht

543

9.7.2 Polling

544

9.7.3 Callback verwenden

545

9.7.4 Callback mit Parameterübergabe verwenden

546

9.7.5 Callback mit Zugriff auf die Programm-Oberfläche

547

9.8 Asynchroner Aufruf beliebiger Methoden

548

9.8.1 Die Beispielklasse

548

9.8.2 Asynchroner Aufruf ohne Callback

550

9.8.3 Asynchroner Aufruf mit Callback und Anzeigefunktion

550

9.8.4 Aufruf mit Rückgabewerten (per Eigenschaft)

551

9.8.5 Aufruf mit Rückgabewerten (per EndInvoke)

552

9.9 Es geht auch einfacher – Async und Await

553

9.9.1 Der Weg von synchron zu asynchron

553

9.9.2 Achtung: Fehlerquellen!

555

9.9.3 Eigene asynchrone Methoden entwickeln

557

9.10 Praxisbeispiele

559

9.10.1 Spieltrieb & Multithreading erleben

559

9.10.2 Prozess- und Thread-Informationen gewinnen

571

9.10.3 Ein externes Programm starten

576

10 Die Task Parallel Library

580

10.1 Überblick

580

10.1.1 Parallel-Programmierung

580

10.1.2 Möglichkeiten der TPL

583

10.1.3 Der CLR-Threadpool

583

10.2 Parallele Verarbeitung mit Parallel.Invoke

584

10.2.1 Aufrufvarianten

585

10.2.2 Einschränkungen

586

10.3 Verwendung von Parallel.For

586

10.3.1 Abbrechen der Verarbeitung

588

10.3.2 Auswerten des Verarbeitungsstatus

589

10.3.3 Und was ist mit anderen Iterator-Schrittweiten?

589

10.4 Collections mit Parallel.ForEach verarbeiten

590

10.5 Die Task-Klasse

591

10.5.1 Einen Task erzeugen

591

10.5.2 Task starten

592

10.5.3 Datenübergabe an den Task

593

10.5.4 Wie warte ich auf das Taskende?

594

10.5.5 Tasks mit Rückgabewerten

596

10.5.6 Die Verarbeitung abbrechen

599

10.5.7 Fehlerbehandlung

603

10.5.8 Weitere Eigenschaften

603

10.6 Zugriff auf das Userinterface

605

10.6.1 Task-Ende und Zugriff auf die Oberfläche

605

10.6.2 Zugriff auf das UI aus dem Task heraus

606

10.7 Weitere Datenstrukturen im Überblick

608

10.7.1 Threadsichere Collections

608

10.7.2 Primitive für die Threadsynchronisation

609

10.8 Parallel LINQ (PLINQ)

609

10.9 Praxisbeispiel: Spieltrieb – Version 2

610

10.9.1 Aufgabenstellung

610

10.9.2 Global-Klasse

610

10.9.3 Controller

611

10.9.4 LKWs

613

10.9.5 Schiff-Klasse

614

10.9.6 Oberfläche

616

11 Fehlersuche und Behandlung

618

11.1 Der Debugger

618

11.1.1 Allgemeine Beschreibung

618

11.1.2 Die wichtigsten Fenster

619

11.1.3 Debugging-Optionen

622

11.1.4 Praktisches Debugging am Beispiel

624

11.2 Arbeiten mit Debug und Trace

628

11.2.1 Wichtige Methoden von Debug und Trace

628

11.2.2 Besonderheiten der Trace-Klasse

631

11.2.3 TraceListener-Objekte

632

11.3 Caller Information

635

11.3.1 Attribute

635

11.3.2 Anwendung

635

11.4 Fehlerbehandlung

636

11.4.1 Anweisungen zur Fehlerbehandlung

636

11.4.2 Try-Catch

636

11.4.3 Try-Finally

641

11.4.4 Das Standardverhalten bei Ausnahmen festlegen

643

11.4.5 Die Exception-Klasse

644

11.4.6 Fehler/Ausnahmen auslösen

644

11.4.7 Eigene Fehlerklassen

645

11.4.8 Exceptionhandling zur Entwurfszeit

647

11.4.9 Code Contracts

647

12 XML in Theorie und Praxis

650

12.1 XML – etwas Theorie

650

12.1.1 Übersicht

650

12.1.2 Der XML-Grundaufbau

653

12.1.3 Wohlgeformte Dokumente

654

12.1.4 Processing Instructions (PI)

657

12.1.5 Elemente und Attribute

657

12.1.6 Verwendbare Zeichensätze

659

12.2 XSD-Schemas

661

12.2.1 XSD-Schemas und ADO.NET

661

12.2.2 XML-Schemas in Visual Studio analysieren

663

12.2.3 XML-Datei mit XSD-Schema erzeugen

666

12.2.4 XSD-Schema aus einer XML-Datei erzeugen

667

12.3 XML-Integration in Visual Basic

668

12.3.1 XML-Literale

668

12.3.2 Einfaches Navigieren durch späte Bindung

671

12.3.3 Die LINQ to XML-API

673

12.3.4 Neue XML-Dokumente erzeugen

674

12.3.5 Laden und Sichern von XML-Dokumenten

676

12.3.6 Navigieren in XML-Daten

678

12.3.7 Auswählen und Filtern

680

12.3.8 Manipulieren der XML-Daten

680

12.3.9 XML-Dokumente transformieren

682

12.4 Verwendung des DOM unter .NET

685

12.4.1 Übersicht

685

12.4.2 DOM-Integration in Visual Basic

686

12.4.3 Laden von Dokumenten

686

12.4.4 Erzeugen von XML-Dokumenten

687

12.4.5 Auslesen von XML-Dateien

689

12.4.6 Direktzugriff auf einzelne Elemente

690

12.4.7 Einfügen von Informationen

691

12.4.8 Suchen in den Baumzweigen

693

12.5 Weitere Möglichkeiten der XML-Verarbeitung

697

12.5.1 Die relationale Sicht mit XmlDataDocument

697

12.5.2 XML-Daten aus Objektstrukturen erzeugen

700

12.5.3 Schnelles Suchen in XML-Daten mit XPathNavigator

703

12.5.4 Schnelles Auslesen von XML-Daten mit XmlReader

706

12.5.5 Erzeugen von XML-Daten mit XmlWriter

708

12.5.6 XML transformieren mit XSLT

710

12.6 Praxisbeispiele

712

12.6.1 Mit dem DOM in XML-Dokumenten navigieren

712

12.6.2 XML-Daten in eine TreeView einlesen

715

12.6.3 DataSets in XML-Strings konvertieren

719

12.6.4 In Dokumenten mit dem XPathNavigator navigieren

723

13 Einführung in ADO.NET

728

13.1 Eine kleine Übersicht

728

13.1.1 Die ADO.NET-Klassenhierarchie

728

13.1.2 Die Klassen der Datenprovider

729

13.1.3 Das Zusammenspiel der ADO.NET-Klassen

732

13.2 Das Connection-Objekt

733

13.2.1 Allgemeiner Aufbau

733

13.2.2 OleDbConnection

733

13.2.3 Schließen einer Verbindung

735

13.2.4 Eigenschaften des Connection-Objekts

735

13.2.5 Methoden des Connection-Objekts

737

13.2.6 Der ConnectionStringBuilder

738

13.3 Das Command-Objekt

739

13.3.1 Erzeugen und Anwenden eines Command-Objekts

739

13.3.2 Erzeugen mittels CreateCommand-Methode

740

13.3.3 Eigenschaften des Command-Objekts

740

13.3.4 Methoden des Command-Objekts

742

13.3.5 Freigabe von Connection- und Command-Objekten

743

13.4 Parameter-Objekte

745

13.4.1 Erzeugen und Anwenden eines Parameter-Objekts

745

13.4.2 Eigenschaften des Parameter-Objekts

745

13.5 Das CommandBuilder-Objekt

746

13.5.1 Erzeugen

746

13.5.2 Anwenden

747

13.6 Das DataReader-Objekt

747

13.6.1 DataReader erzeugen

748

13.6.2 Daten lesen

748

13.6.3 Eigenschaften des DataReaders

749

13.6.4 Methoden des DataReaders

749

13.7 Das DataAdapter-Objekt

750

13.7.1 DataAdapter erzeugen

750

13.7.2 Command-Eigenschaften

751

13.7.3 Fill-Methode

752

13.7.4 Update-Methode

753

13.8 Praxisbeispiele

754

13.8.1 Wichtige ADO.NET-Objekte im Einsatz

754

13.8.2 Eine Aktionsabfrage ausführen

756

13.8.3 Eine Auswahlabfrage aufrufen

758

13.8.4 Die Datenbank aktualisieren

760

13.8.5 Den ConnectionString speichern

763

14 Das DataSet

766

14.1 Grundlegende Features des DataSets

766

14.1.1 Die Objekthierarchie

767

14.1.2 Die wichtigsten Klassen

767

14.1.3 Erzeugen eines DataSets

768

14.2 Das DataTable-Objekt

770

14.2.1 DataTable erzeugen

770

14.2.2 Spalten hinzufügen

770

14.2.3 Zeilen zur DataTable hinzufügen

771

14.2.4 Auf den Inhalt einer DataTable zugreifen

772

14.3 Die DataView

774

14.3.1 Erzeugen eines DataView

774

14.3.2 Sortieren und Filtern von Datensätzen

774

14.3.3 Suchen von Datensätzen

775

14.4 Typisierte DataSets

775

14.4.1 Ein typisiertes DataSet erzeugen

776

14.4.2 Das Konzept der Datenquellen

777

14.4.3 Typisierte DataSets und TableAdapter

778

14.5 Die Qual der Wahl

779

14.5.1 DataReader – der schnelle Lesezugriff

780

14.5.2 DataSet – die Datenbank im Hauptspeicher

780

14.5.3 Objektrelationales Mapping – die Zukunft?

781

14.6 Praxisbeispiele

782

14.6.1 Im DataView sortieren und filtern

782

14.6.2 Suche nach Datensätzen

784

14.6.3 Ein DataSet in einen XML-String serialisieren

785

14.6.4 Untypisierte in typisierte DataSets konvertieren

790

14.6.5 Eine LINQ to SQL-Abfrage ausführen

795

15 Verteilen von Anwendungen

800

15.1 ClickOnce-Deployment

801

15.1.1 Übersicht/Einschränkungen

801

15.1.2 Die Vorgehensweise

802

15.1.3 Ort der Veröffentlichung

802

15.1.4 Anwendungsdateien

803

15.1.5 Erforderliche Komponenten

803

15.1.6 Aktualisierungen

804

15.1.7 Veröffentlichungsoptionen

805

15.1.8 Veröffentlichen

806

15.1.9 Verzeichnisstruktur

806

15.1.10 Der Webpublishing-Assistent

808

15.1.11 Neue Versionen erstellen

809

15.2 InstallShield

809

15.2.1 Installation

809

15.2.2 Aktivieren

810

15.2.3 Ein neues Setup-Projekt

810

15.2.4 Finaler Test

818

15.3 Hilfedateien programmieren

818

15.3.1 Der HTML Help Workshop

819

15.3.2 Bedienung am Beispiel

820

15.3.3 Hilfedateien in die VB-Anwendung einbinden

822

15.3.4 Eine alternative Hilfe-IDE verwenden

826

16 Weitere Techniken

828

16.1 Zugriff auf die Zwischenablage

828

16.1.1 Das Clipboard-Objekt

828

16.1.2 Zwischenablage-Funktionen für Textboxen

830

16.2 Arbeiten mit der Registry

830

16.2.1 Allgemeines

831

16.2.2 Registry-Unterstützung in .NET

832

16.3 .NET-Reflection

834

16.3.1 Übersicht

834

16.3.2 Assembly laden

834

16.3.3 Mittels GetType und Type Informationen sammeln

835

16.3.4 Dynamisches Laden von Assemblies

837

16.4 Praxisbeispiele

839

16.4.1 Zugriff auf die Registry

839

16.4.2 Dateiverknüpfungen erzeugen

841

16.4.3 Die Zwischenablage überwachen und anzeigen

843

16.4.4 Die WIA-Library kennenlernen

846

16.4.5 Auf eine Webcam zugreifen

858

16.4.6 Auf den Scanner zugreifen

860

16.4.7 OpenOffice.org Writer per OLE steuern

864

16.4.8 Nutzer und Gruppen des Systems ermitteln

872

16.4.9 Testen, ob Nutzer in einer Gruppe enthalten ist

873

16.4.10 Testen, ob der Nutzer ein Administrator ist

875

16.4.11 Die IP-Adressen des Computers bestimmen

876

16.4.12 Die IP-Adresse über den Hostnamen bestimmen

877

16.4.13 Diverse Systeminformationen ermitteln

878

16.4.14 Sound per MCI aufnehmen

887

16.4.15 Mikrofonpegel anzeigen

890

16.4.16 Pegeldiagramm aufzeichnen

892

16.4.17 Sound-und Video-Dateien per MCI abspielen

896

17 Konsolenanwendungen

904

17.1 Grundaufbau/Konzepte

904

17.1.1 Unser Hauptprogramm – Module1.vb

905

17.1.2 Rückgabe eines Fehlerstatus

906

17.1.3 Parameterübergabe

907

17.1.4 Zugriff auf die Umgebungsvariablen

908

17.2 Die Kommandozentrale: System.Console

909

17.2.1 Eigenschaften

909

17.2.2 Methoden/Ereignisse

910

17.2.3 Textausgaben

911

17.2.4 Farbangaben

912

17.2.5 Tastaturabfragen

913

17.2.6 Arbeiten mit Streamdaten

914

17.3 Praxisbeispiel: Farbige Konsolenanwendung

915

Teil III: Windows Apps

918

18 Erste Schritte

920

18.1 Grundkonzepte und Begriffe

920

18.1.1 Windows Runtime (WinRT)

920

18.1.2 Windows Store Apps

921

18.1.3 Fast and Fluid

922

18.1.4 Process Sandboxing und Contracts

923

18.1.5 .NET WinRT-Profil

925

18.1.6 Language Projection

925

18.1.7 Vollbildmodus – war da was?

927

18.1.8 Windows Store

927

18.1.9 Zielplattformen

928

18.2 Entwurfsumgebung

929

18.2.1 Betriebssystem

929

18.2.2 Windows-Simulator

929

18.2.3 Remote-Debugging

932

18.3 Ein (kleines) Einstiegsbeispiel

933

18.3.1 Aufgabenstellung

933

18.3.2 Quellcode

933

18.3.3 Oberflächenentwurf

936

18.3.4 Installation und Test

938

18.3.5 Touchscreen

940

18.3.6 Fazit

940

18.4 Weitere Details zu WinRT

942

18.4.1 Wo ist WinRT einzuordnen?

943

18.4.2 Die WinRT-API

944

18.4.3 Wichtige WinRT-Namespaces

946

18.4.4 Der Unterbau

947

18.5 Praxisbeispiel

949

18.5.1 WinRT in Desktop-Applikationen nutzen

949

19 App-Oberflächen entwerfen

954

19.1 Grundkonzepte

954

19.1.1 XAML (oder HTML 5) für die Oberfläche

955

19.1.2 Die Page, der Frame und das Window

956

19.1.3 Das Befehlsdesign

958

19.1.4 Die Navigationsdesigns

960

19.1.5 Achtung: Fingereingabe!

961

19.1.6 Verwendung von Schriftarten

961

19.2 Seitenauswahl und -navigation

962

19.2.1 Die Startseite festlegen

962

19.2.2 Navigation und Parameterübergabe

962

19.2.3 Den Seitenstatus erhalten

963

19.3 App-Darstellung

964

19.3.1 Vollbild quer und hochkant

964

19.3.2 Was ist mit Andocken und Füllmodus?

965

19.3.3 Reagieren auf die Änderung

965

19.4 Skalieren von Apps

967

19.5 Praxisbeispiele

969

19.5.1 Seitennavigation und Parameterübergabe

969

19.5.2 Die Fensterkopfzeile anpassen

971

20 Die wichtigsten Controls

974

20.1 Einfache WinRT-Controls

974

20.1.1 TextBlock, RichTextBlock

974

20.1.2 Button, HyperlinkButton, RepeatButton

977

20.1.3 CheckBox, RadioButton, ToggleButton, ToggleSwitch

979

20.1.4 TextBox, PasswordBox, RichEditBox

980

20.1.5 Image

984

20.1.6 ScrollBar, Slider, ProgressBar, ProgressRing

985

20.1.7 Border, Ellipse, Rectangle

987

20.2 Layout-Controls

988

20.2.1 Canvas

988

20.2.2 StackPanel

989

20.2.3 ScrollViewer

989

20.2.4 Grid

990

20.2.5 VariableSizedWrapGrid

991

20.2.6 SplitView

992

20.2.7 Pivot

996

20.2.8 RelativPanel

997

20.3 Listendarstellungen

999

20.3.1 ComboBox, ListBox

999

20.3.2 ListView

1003

20.3.3 GridView

1005

20.3.4 FlipView

1007

20.4 Sonstige Controls

1009

20.4.1 CaptureElement

1009

20.4.2 MediaElement

1010

20.4.3 Frame

1012

20.4.4 WebView

1012

20.4.5 ToolTip

1013

20.4.6 CalendarDatePicker

1015

20.4.7 DatePicker/TimePicker

1016

20.5 Praxisbeispiele

1016

20.5.1 Einen StringFormat-Konverter implementieren

1016

20.5.2 Besonderheiten der TextBox kennen lernen

1018

20.5.3 Daten in der GridView gruppieren

1021

20.5.4 Das SemanticZoom-Control verwenden

1026

20.5.5 Die CollectionViewSource verwenden

1031

20.5.6 Zusammenspiel ListBox/AppBar

1034

21 Apps im Detail

1038

21.1 Ein Windows App-Projekt im Detail

1038

21.1.1 Contracts und Extensions

1039

21.1.2 AssemblyInfo.vb

1039

21.1.3 Verweise

1041

21.1.4 App.xaml und App.xaml.vb

1041

21.1.5 Package.appxmanifest

1042

21.1.6 Application1_TemporaryKey.pfx

1047

21.1.7 MainPage.xaml & MainPage.xaml.vb

1047

21.1.8 Assets/Symbole

1048

21.1.9 Nach dem Kompilieren

1048

21.2 Der Lebenszyklus einer Windows App

1048

21.2.1 Möglichkeiten der Aktivierung von Apps

1050

21.2.2 Der Splash Screen

1052

21.2.3 Suspending

1052

21.2.4 Resuming

1053

21.2.5 Beenden von Apps

1054

21.2.6 Die Ausnahmen von der Regel

1055

21.2.7 Debuggen

1055

21.3 Daten speichern und laden

1059

21.3.1 Grundsätzliche Überlegungen

1059

21.3.2 Worauf und wie kann ich zugreifen?

1060

21.3.3 Das AppData-Verzeichnis

1060

21.3.4 Das Anwendungs-Installationsverzeichnis

1062

21.3.5 Das Downloads-Verzeichnis

1063

21.3.6 Sonstige Verzeichnisse

1064

21.3.7 Anwendungsdaten lokal sichern und laden

1065

21.3.8 Daten in der Cloud ablegen/laden (Roaming)

1067

21.3.9 Aufräumen

1068

21.3.10 Sensible Informationen speichern

1069

21.4 Praxisbeispiele

1070

21.4.1 Die Auto-Play-Funktion unterstützen

1070

21.4.2 Einen zusätzlichen Splash Screen einsetzen

1074

21.4.3 Eine Dateiverknüpfung erstellen

1076

22 App-Techniken

1082

22.1 Arbeiten mit Dateien/Verzeichnissen

1082

22.1.1 Verzeichnisinformationen auflisten

1082

22.1.2 Unterverzeichnisse auflisten

1085

22.1.3 Verzeichnisse erstellen/löschen

1087

22.1.4 Dateien auflisten

1088

22.1.5 Dateien erstellen/schreiben/lesen

1090

22.1.6 Dateien kopieren/umbenennen/löschen

1094

22.1.7 Verwenden der Dateipicker

1096

22.1.8 StorageFile-/StorageFolder-Objekte speichern

1100

22.1.9 Verwenden der Most Recently Used-Liste

1102

22.2 Datenaustausch zwischen Apps/Programmen

1103

22.2.1 Zwischenablage

1103

22.2.2 Teilen von Inhalten

1110

22.2.3 Eine App als Freigabeziel verwenden

1113

22.2.4 Zugriff auf die Kontaktliste

1114

22.3 Spezielle Oberflächenelemente

1116

22.3.1 MessageDialog

1116

22.3.2 ContentDialog

1119

22.3.3 Popup-Benachrichtigungen

1121

22.3.4 PopUp/Flyouts

1128

22.3.5 Das PopupMenu einsetzen

1132

22.3.6 Eine AppBar verwenden

1134

22.4 Datenbanken und Windows Store Apps

1138

22.4.1 Der Retter in der Not: SQLite!

1138

22.4.2 Verwendung/Kurzüberblick

1138

22.4.3 Installation

1140

22.4.4 Wie kommen wir zu einer neuen Datenbank?

1141

22.4.5 Wie werden die Daten manipuliert?

1145

22.5 Vertrieb der App

1146

22.5.1 Verpacken der App

1146

22.5.2 App-Installation per Skript

1148

22.6 Ein Blick auf die App-Schwachstellen

1150

22.6.1 Quellcodes im Installationsverzeichnis

1150

22.6.2 Zugriff auf den App-Datenordner

1152

22.7 Praxisbeispiele

1152

22.7.1 Ein Verzeichnis auf Änderungen überwachen

1152

22.7.2 Eine App als Freigabeziel verwenden

1155

22.7.3 ToastNotifications einfach erzeugen

1160

Anhang

1166

A Glossar

1168

B Wichtige Dateiextensions

1174

Index

1176

Download-Kapitel

30

 

© 2009-2024 ciando GmbH