Visual Basic 2012 - Grundlagen und Profiwissen

Walter Doberenz, Thomas Gewinnus

Visual Basic 2012 - Grundlagen und Profiwissen

2012

1168 Seiten

Format: PDF, Online Lesen

E-Book: €  39,99

E-Book kaufen

E-Book kaufen

ISBN: 9783446435223

 

Visual Basic 2012 - Grundlagen und Profiwissen

4

Vorwort

54

Zum Buchinhalt

54

Zu den Neuigkeiten in Visual Studio 2012

55

Weitere Bücher von uns

56

Zu den Codebeispielen

56

Nobody is perfect

57

1 Einstieg in Visual Studio 2012

60

1.1 Die Installation von Visual Studio 2012

60

1.1.1 Überblick über die Produktpalette

60

Visual Studio 2012 Express

60

Visual Studio 2012 Professional

61

Visual Studio 2012 Premium

62

Visual Studio 2012 Ultimate

62

1.1.2 Anforderungen an Hard- und Software

62

1.2 Unser allererstes VB-Programm

63

1.2.1 Vorbereitungen

63

Compilerpfad eintragen

63

1.2.2 Programm schreiben

65

1.2.3 Programm kompilieren und testen

66

1.2.4 Einige Erläuterungen zum Quellcode

66

Befehlszeilen

66

Imports-Anweisung

66

Module-Anweisung

67

WriteLine- und ReadLine-Methoden

67

Assemblierung

67

1.2.5 Konsolenanwendungen sind langweilig

67

1.3 Die Windows-Philosophie

68

1.3.1 Mensch-Rechner-Dialog

68

1.3.2 Objekt- und ereignisorientierte Programmierung

68

Objekte (Objects)

69

Eigenschaften (Properties)

69

Methoden (Methods)

69

Ereignisse (Events)

69

1.3.3 Windows-Programmierung unter Visual Studio 2012

70

1.4 Die Entwicklungsumgebung Visual Studio 2012

71

1.4.1 Der Startdialog

71

1.4.2 Die wichtigsten Fenster

72

Der Projektmappen-Explorer

73

Der Designer

74

Der Werkzeugkasten

74

Das Eigenschaften-Fenster

74

Das Codefenster

74

1.5 Microsofts .NET-Technologie

75

1.5.1 Zur Geschichte von .NET

75

Vom alten VB zu VB.NET

75

Wie funktioniert eine .NET-Sprache?

76

1.5.2 .NET-Features und Begriffe

77

.NET-Framework

77

Die Common Language Specification (CLS)

78

Das Common Type System (CTS)

79

Die Common Language Runtime (CLR)

79

Namespaces ersetzen Registry

80

Assemblierungen

81

Zugriff auf COM-Komponenten

81

Metadaten und Reflexion

81

Attribute

82

Serialisierung

83

Multithreading

83

Objektorientierte Programmierung pur

84

1.6 Wichtige Neuigkeiten in Visual Studio 2012

84

1.6.1 Die neue Visual Studio 2012-Entwicklungsumgebung

84

Neues Outfit der Toolbar

84

Veränderter Projektmappen-Explorer

85

Registerkartenverwaltung der geöffneten Dateien

86

Neuer Verweis Manager-Dialog

86

ByVal kann weggelassen werden

86

Suchen überall

87

Projekt-Kompatibilität

87

Neue Projekttypen

87

Multi-Monitor -Unterstützung

87

Zusätzliche Tools und Features

87

1.6.2 Neuheiten im .NET Framework 4.5

88

WinRT-Anwendungen

88

Portable Klassenbibliotheken

88

Parallele Computervorgänge

88

Internet

89

WPF

89

WCF

89

1.6.3 VB 2012 – Sprache und Compiler

89

Asynchrone Methoden

89

Caller Information

90

Iteratoren

90

1.7 Praxisbeispiele

90

1.7.1 Windows-Anwendung für Einsteiger

90

1. Etappe: Visueller Entwurf der Bedienoberfläche

90

2. Etappe: Zuweisen der Objekteigenschaften

91

3. Etappe: Verknüpfen der Objekte mit Ereignissen

92

4. Etappe: Programm kompilieren und testen

93

Bemerkungen

93

1.7.2 Windows-Anwendung für fortgeschrittene Einsteiger

94

1. Etappe: Visueller Entwurf der Bedienoberfläche

94

2. Etappe: Zuweisen der Objekteigenschaften

95

3. Etappe: Verknüpfen der Objekte mit Ereignissen

96

4. Etappe: Programm kompilieren und testen

98

IntelliSense – die hilfreiche Fee

99

Fehlersuche

100

2 Einführung in Visual Basic

102

2.1 Grundbegriffe

102

2.1.1 Anweisungen

102

2.1.2 Bezeichner

103

Namensgebung und Schlüsselwörter

103

Leerzeichen etc.

104

Groß-/Kleinschreibung

104

2.1.3 Kommentare

104

2.1.4 Zeilenumbruch

105

Lange Zeilen teilen

105

Implizite Zeilenfortsetzung

105

Mehrere Anweisungen pro Zeile

106

2.2 Datentypen, Variablen und Konstanten

107

2.2.1 Fundamentale Typen

107

2.2.2 Wertetypen versus Verweistypen

108

Wertetypen

108

Verweistypen

108

2.2.3 Benennung von Variablen

108

2.2.4 Deklaration von Variablen

109

Dim-Anweisung

109

Mehrfachdeklaration

109

Anfangswerte

110

Option Explicit

110

Option Strict

111

2.2.5 Typinferenz

112

2.2.6 Konstanten deklarieren

112

2.2.7 Gültigkeitsbereiche von Deklarationen

113

2.2.8 Lokale Variablen mit Dim

113

2.2.9 Lokale Variablen mit Static

114

2.2.10 Private globale Variablen

114

2.2.11 Public Variablen

115

2.3 Wichtige Datentypen im Überblick

115

2.3.1 Byte, Short, Integer, Long

115

2.3.2 Single, Double und Decimal

116

2.3.3 Char und String

116

2.3.4 Date

117

2.3.5 Boolean

118

2.3.6 Object

118

2.4 Konvertieren von Datentypen

119

2.4.1 Implizite und explizite Konvertierung

119

2.4.2 Welcher Datentyp passt zu welchem?

120

2.4.3 Konvertierungsfunktionen

121

2.4.4 CType-Funktion

122

2.4.5 Konvertieren von Strings

122

ToString-Methode

122

String in Zahl verwandeln

122

EVA-Prinzip

123

2.4.6 Die Convert-Klasse

124

2.4.7 Die Parse-Methode

124

2.4.8 Boxing und Unboxing

125

Boxing

125

Unboxing

125

2.4.9 TryCast-Operator

126

2.4.10 Nullable Types

126

2.5 Operatoren

127

2.5.1 Arithmetische Operatoren

127

2.5.2 Zuweisungsoperatoren

128

2.5.3 Logische Operatoren

129

2.5.4 Vergleichsoperatoren

130

2.5.5 Rangfolge der Operatoren

130

2.6 Kontrollstrukturen

131

2.6.1 Verzweigungsbefehle

131

2.6.2 Schleifenanweisungen

134

For-Next-Schleifen

134

Do-Loop-Schleifen

135

2.7 Benutzerdefinierte Datentypen

135

2.7.1 Enumerationen

135

2.7.2 Strukturen

136

Deklaration

137

Datenzugriff

137

With-Anweisung

138

Bemerkungen

138

2.8 Nutzerdefinierte Funktionen/Prozeduren

139

2.8.1 Deklaration und Syntax

139

Function

139

Sub

140

2.8.2 Parameterübergabe allgemein

141

Signatur der Parameterliste

141

Benannte Parameter

141

2.8.3 Übergabe mit ByVal und ByRef

142

ByVal

142

ByRef

142

2.8.4 Optionale Parameter

143

2.8.5 Überladene Funktionen/Prozeduren

143

2.9 Praxisbeispiele

144

2.9.1 Vom PAP zum Konsolen-Programm

144

Programmablaufplan

145

Programmierung

145

Kompilieren

146

Test

146

2.9.2 Vom Konsolen- zum Windows-Programm

146

Oberfläche

147

Quelltext

147

Test

148

Bemerkungen

148

2.9.3 Schleifenanweisungen kennen lernen

148

Oberfläche

148

Quellcode

148

Test

150

2.9.4 Methoden überladen

151

Oberfläche

151

Quellcode

151

Test

153

2.9.5 Eine Iterationsschleife verstehen

153

Programmablaufplan

154

Oberfläche

154

Quellcode

154

Test

155

Ergänzung

156

3 OOP-Konzepte

158

3.1 Strukturierter versus objektorientierter Entwurf

158

3.1.1 Was bedeutet strukturierte Programmierung?

158

3.1.2 Was heißt objektorientierte Programmierung?

159

3.2 Grundbegriffe der OOP

160

3.2.1 Objekt, Klasse, Instanz

160

3.2.2 Kapselung und Wiederverwendbarkeit

161

3.2.3 Vererbung und Polymorphie

161

3.2.4 Sichtbarkeit von Klassen und ihren Mitgliedern

162

Klassen

162

Klassenmitglieder

162

3.2.5 Allgemeiner Aufbau einer Klasse

163

3.3 Ein Objekt erzeugen

164

3.3.1 Referenzieren und Instanziieren

165

3.3.2 Klassische Initialisierung

166

3.3.3 Objekt-Initialisierer

166

3.3.4 Arbeiten mit dem Objekt

166

3.3.5 Zerstören des Objekts

167

3.4 OOP-Einführungsbeispiel

167

3.4.1 Vorbereitungen

167

3.4.2 Klasse definieren

168

Bemerkungen

169

3.4.3 Objekt erzeugen und initialisieren

169

3.4.4 Objekt verwenden

169

3.4.5 IntelliSense – die hilfreiche Fee

169

3.4.6 Objekt testen

170

3.4.7 Warum unsere Klasse noch nicht optimal ist

171

3.5 Eigenschaften

171

3.5.1 Eigenschaften kapseln

171

Deklarieren von Eigenschaften

172

Zugriff

173

Bemerkung

173

3.5.2 Eigenschaften mit Zugriffsmethoden kapseln

174

3.5.3 Lese-/Schreibschutz für Eigenschaften

175

3.5.4 Statische Eigenschaften

176

3.5.5 Selbst implementierende Eigenschaften

177

3.6 Methoden

178

3.6.1 Öffentliche und private Methoden

178

3.6.2 Überladene Methoden

179

3.6.3 Statische Methoden

179

3.7 Ereignisse

181

3.7.1 Ereignise deklarieren

181

3.7.2 Ereignis auslösen

181

3.7.3 Ereignis auswerten

182

3.7.4 Benutzerdefinierte Ereignisse (Custom Events)

183

Deklaration

184

Anwendung

185

3.8 Arbeiten mit Konstruktor und Destruktor

187

3.8.1 Der Konstruktor erzeugt das Objekt

187

Deklaration

187

Aufruf

188

3.8.2 Bequemer geht’s mit einem Objekt-Initialisierer

189

3.8.3 Destruktor und Garbage Collector räumen auf

189

3.8.4 Mit Using den Lebenszyklus des Objekts kapseln

192

3.9 Vererbung und Polymorphie

192

3.9.1 Vererbungsbeziehungen im Klassendiagramm

193

3.9.2 Überschreiben von Methoden (Method-Overriding)

194

3.9.3 Klassen implementieren

194

Basisklasse CKunde

194

Subklassen

195

Subklasse CPrivatKunde

197

Subklasse CFirmenKunde

198

Testoberfläche

199

3.9.4 Objekte implementieren

199

Praxistest

200

3.9.5 Ausblenden von Mitgliedern durch Vererbung

201

3.9.6 Allgemeine Hinweise und Regeln zur Vererbung

202

3.9.7 Polymorphe Methoden

203

Praxistest

205

3.10 Besondere Klassen und Features

205

3.10.1 Abstrakte Klassen

205

3.10.2 Abstrakte Methoden

206

3.10.3 Versiegelte Klassen

207

3.10.4 Partielle Klassen

207

3.10.5 Die Basisklasse System.Object

209

3.10.6 Property-Accessors

210

3.11 Schnittstellen (Interfaces)

210

3.11.1 Definition einer Schnittstelle

211

3.11.2 Implementieren einer Schnittstelle

211

3.11.3 Abfragen, ob eine Schnittstelle vorhanden ist

212

3.11.4 Mehrere Schnittstellen implementieren

213

3.11.5 Schnittstellenprogrammierung ist ein weites Feld

213

3.12 Praxisbeispiele

213

3.12.1 Eigenschaften sinnvoll kapseln

213

Oberfläche

214

Quellcode CKreis

214

Quellcode Form1

215

Test

216

Objektinitialisierer

216

3.12.2 Eine statische Klasse anwenden

217

Oberfläche

217

Quellcode CKugel

217

Quellcode Form1

217

Test

218

3.12.3 Vom fetten zum dünnen Client

218

Oberfläche

219

Quellcode (Fat Client)

219

Test

222

Bemerkungen zum fetten Client

222

Abmagerungskur für den fetten Client

223

Quellcode für CRegister

224

Quellcode für CRechenmodul

225

Quellcode für Form1

227

Test

228

Bemerkungen

228

3.12.4 Schnittstellenvererbung verstehen

228

Klassendiagramme

229

Oberfläche Form1

229

Quellcode CPerson

229

Quellcode CKunde

230

Quellcode Form1

230

Test

231

Quellcode IPerson

231

Quellcode CKunde

232

3.12.5 Aggregation und Vererbung gegenüberstellen

232

Bedienoberfläche

233

Variante 1: Klassen CPerson und CPersonen mit Aggregation

234

Test

237

Variante 2: Klasse CPersonen mit Vererbung

238

Test

238

3.12.6 Eine Klasse zur Matrizenrechnung entwickeln

239

Quellcode der Klasse CMatrix

239

Oberfläche

241

Quellcode von Form1

242

Test

244

Bemerkung

244

4 Arrays, Strings, Funktionen

246

4.1 Datenfelder (Arrays)

246

4.1.1 Ein Array deklarieren

246

4.1.2 Zugriff auf Array-Elemente

247

4.1.3 Oberen Index ermitteln

247

4.1.4 Explizite Arraygrenzen

247

4.1.5 Arrays erzeugen und initialisieren

247

4.1.6 Zugriff mittels Schleife

248

For Each-Schleife

248

4.1.7 Mehrdimensionale Arrays

249

Mehrdimensional initialisieren

249

4.1.8 Dynamische Arrays

250

ReDim-Anweisung

250

Preserve-Option

250

4.1.9 Zuweisen von Arrays

251

4.1.10 Arrays aus Strukturvariablen

252

4.1.11 Löschen von Arrays

253

4.1.12 Eigenschaften und Methoden von Arrays

253

Wichtige Instanzeneigenschaften und -methoden

254

Array-Dimensionen bestimmen

254

Arrays kopieren

254

Wichtige (statische) Methoden der Array-Klasse

255

Suchen in Arrays

255

4.1.13 Übergabe von Arrays

256

4.2 Zeichenkettenverarbeitung

257

4.2.1 Strings zuweisen

257

4.2.2 Eigenschaften und Methoden eines Strings

257

Wichtige Instanzeneigenschaften und -methoden

258

Einige Beispiele für Instanzeneigenschaften

258

Einige Beispiele für Instanzenmethoden

259

4.2.3 Kopieren eines Strings in ein Char-Array

260

4.2.4 Wichtige (statische) Methoden der String-Klasse

260

Stringvergleich

261

Strings zerlegen und wieder zusammenbauen

261

4.2.5 Die StringBuilder-Klasse

262

Erzeugen

263

Eigenschaften

264

Methoden

264

4.3 Reguläre Ausdrücke

265

4.3.1 Wozu werden reguläre Ausdrücke verwendet?

265

4.3.2 Eine kleine Einführung

266

4.3.3 Wichtige Methoden der Klasse Regex

266

Die Match-Methode

267

Eigenschaften des Match-Objekts

267

Die NextMatch-Methode

267

Die Matches-Methode

268

Der Alternator

268

4.3.4 Kompilierte reguläre Ausdrücke

268

4.3.5 RegexOptions-Enumeration

269

4.3.6 Metazeichen (Escape-Zeichen)

270

4.3.7 Zeichenmengen (Character Sets)

271

4.3.8 Quantifizierer

272

4.3.9 Zero-Width Assertions

273

String- und Zeilengrenzen (^ und $)

274

Wortgrenzen (b)

274

Positiver Lookahead (?=expr)

275

Negativer Lookahead (?!expr)

276

Positiver (?<=expr) und negativer (?

276

4.3.10 Gruppen

277

4.3.11 Text ersetzen

277

4.3.12 Text splitten

278

Trennzeichen im Ergebnis

278

4.4 Datums- und Zeitberechnungen

279

4.4.1 Grundlegendes

279

4.4.2 Wichtige Eigenschaften von DateTime-Variablen

280

4.4.3 Wichtige Methoden von DateTime-Variablen

281

4.4.4 Wichtige Mitglieder der DateTime-Struktur

282

4.4.5 Konvertieren von Datumstrings in DateTime-Werte

283

4.4.6 Die TimeSpan-Struktur

283

4.5 Vordefinierten Funktionen

285

4.5.1 Mathematik

285

Zahlen runden

285

Winkel umrechnen

286

Wurzel- und Potenzoperationen

286

Logarithmus und Exponentialfunktionen

286

4.5.2 Datums- und Zeitfunktionen

287

Wichtige Instanzeneigenschaften und -methoden

287

Wichtige Klasseneigenschaften und -methoden

289

4.6 Zahlen formatieren

290

4.6.1 Die ToString-Methode

290

Zahlenformatierungen

291

Datumsformatierungen

291

4.6.2 Die Format-Methode

292

4.7 Praxisbeispiele

293

4.7.1 Zeichenketten verarbeiten

293

Oberfläche

293

Quellcode

294

Test

295

Bemerkungen

296

4.7.2 Zeichenketten mittels StringBuilder addieren

296

Oberfläche

296

Quellcode Klasse CTest

297

Quellcode Form1

298

Test

299

Bemerkungen

300

4.7.3 Reguläre Ausdrücke testen

300

Oberfläche

300

Quellcode

301

Test

301

Bemerkungen

301

4.7.4 Methodenaufrufe mit Array-Parametern

301

Oberfläche

302

Quellcode

302

Test

304

Bemerkungen

304

5 Weitere Sprachfeatures

306

5.1 Namespaces (Namensräume)

306

5.1.1 Ein kleiner Überblick

306

5.1.2 Die Imports-Anweisung

308

5.1.3 Namespace-Alias

308

5.1.4 Namespaces in Projekteigenschaften

309

5.1.5 Namespace Alias Qualifizierer

309

5.1.6 Eigene Namespaces einrichten

310

5.2 Überladen von Operatoren

311

5.2.1 Syntaxregeln

311

5.2.2 Praktische Anwendung

312

Klasse CArray

312

Klasse Form1

312

5.2.3 Konvertierungsoperatoren überladen

313

5.3 Auflistungen (Collections)

314

5.3.1 Beziehungen zwischen den Schnittstellen

314

5.3.2 IEnumerable

314

5.3.3 ICollection

315

5.3.4 IList

316

5.3.5 Iteratoren

316

5.3.6 Die ArrayList-Collection

317

Weitere Eigenschaften und Methoden

317

5.3.7 Die Hashtable

318

5.4 Generische Datentypen

319

5.4.1 Wie es früher einmal war

319

Miserable Typsicherheit bei den alten Collections

320

Eine eigene generische Collection-Klasse bedeutet viel Arbeit

320

Warum uns auch ein Array nicht weiterhilft

321

5.4.2 Typsicherheit durch Generics

321

Einen einfachen generischen Typ deklarieren

321

Generischen Typ verwenden

322

5.4.3 List-Collection ersetzt ArrayList

322

5.4.4 Über die Vorzüge generischer Collections

323

5.4.5 Typbeschränkungen durch Constraints

324

5.4.6 Collection-Initialisierer

325

5.4.7 Generische Methoden

325

5.5 Delegates

326

5.5.1 Delegates sind Methodenzeiger

326

5.5.2 Delegate-Typ definieren

327

5.5.3 Delegate-Objekt erzeugen

328

Mit dem Delegate-Objekt arbeiten

328

5.5.4 Delegates vereinfacht instanziieren

328

5.5.5 Relaxed Delegates

329

5.5.6 Anonyme Methoden

329

5.5.7 Lambda-Ausdrücke

330

5.5.8 Lambda-Ausdrücke in der Task Parallel Library

331

Bemerkungen

332

5.6 Dynamische Programmierung

333

5.6.1 Wozu dynamische Programmierung?

333

5.6.2 Das Prinzip der dynamischen Programmierung

334

Die Klasse DynamicObject

334

Die Klasse ExpandoObject

335

Late Binding

337

5.6.3 Kovarianz und Kontravarianz

337

5.7 Weitere Datentypen

338

5.7.1 BigInteger

338

5.7.2 Complex

340

5.7.3 Tuple(Of T)

341

5.7.4 SortedSet(Of T)

342

5.8 Praxisbeispiele

343

5.8.1 ArrayList versus generische List

343

Oberfläche

343

Quellcode (mit ArrayList)

344

Quellcode (mit generischer List)

345

Test

345

Bemerkungen

346

5.8.2 Delegates und Lambda Expressions

346

Oberfläche

347

Quellcode

347

Test

349

5.8.3 Mit dynamischem Objekt eine Datei durchsuchen

349

Oberfläche

349

Quellcode CDynFile

349

Textdatei hinzufügen

351

Quellcode Form1

352

Test

352

Bemerkungen

353

6 Einführung in LINQ

354

6.1 LINQ-Grundlagen

354

6.1.1 Die LINQ-Architektur

354

6.1.2 LINQ-Implementierungen

355

6.1.3 Anonyme Typen

355

6.1.4 Erweiterungsmethoden

357

6.2 Abfragen mit LINQ to Objects

358

6.2.1 Grundlegendes zur LINQ-Syntax

358

6.2.2 Zwei alternative Schreibweisen von LINQ-Abfragen

359

6.2.3 Übersicht der wichtigsten Abfrage-Operatoren

361

Der Let-Zuweisungsoperator

362

6.3 LINQ-Abfragen im Detail

362

6.3.1 Die Projektionsoperatoren Select und SelectMany

363

Select

363

SelectMany

364

6.3.2 Der Restriktionsoperator Where

365

6.3.3 Die Sortierungsoperatoren OrderBy und ThenBy

365

OrderBy/OrderByDescending

365

ThenBy/ThenByDescending

366

Reverse

367

6.3.4 Der Gruppierungsoperator GroupBy

367

6.3.5 Verknüpfen mit Join

368

6.3.6 Aggregat-Operatoren

369

Count

369

Sum

370

6.3.7 Verzögertes Ausführen von LINQ-Abfragen

371

6.3.8 Konvertierungsmethoden

372

6.3.9 Abfragen mit PLINQ

372

Probleme mit der Sortierfolge

374

6.4 Praxisbeispiele

375

6.4.1 Die Syntax von LINQ-Abfragen verstehen

375

Oberfläche

376

Quellcode

376

Test

377

Bemerkungen

378

6.4.2 Aggregat-Abfragen mit LINQ

378

Oberfläche

378

Quellcode

378

Test

380

Bemerkungen

380

7 Zugriff auf das Dateisystem

384

7.1 Grundlagen

384

7.1.1 Klassen für Verzeichnis- und Dateioperationen

385

Übersicht

385

7.1.2 Statische versus Instanzen-Klasse

385

7.2 Übersichten

386

7.2.1 Methoden der Directory-Klasse

386

7.2.2 Methoden eines DirectoryInfo-Objekts

387

7.2.3 Eigenschaften eines DirectoryInfo-Objekts

387

7.2.4 Methoden der File-Klasse

387

7.2.5 Methoden eines FileInfo-Objekts

388

7.2.6 Eigenschaften eines FileInfo-Objekts

389

7.3 Operationen auf Verzeichnisebene

389

7.3.1 Existenz eines Verzeichnisses/einer Datei feststellen

389

7.3.2 Verzeichnisse erzeugen und löschen

390

Mit Directory-Klasse

390

Mit DirectoryInfo-Klasse

390

7.3.3 Verzeichnisse verschieben und umbenennen

391

7.3.4 Aktuelles Verzeichnis bestimmen

391

7.3.5 Unterverzeichnisse ermitteln

391

7.3.6 Alle Laufwerke ermitteln

392

7.3.7 Dateien kopieren und verschieben

393

7.3.8 Dateien umbenennen

394

7.3.9 Dateiattribute feststellen

394

Die FileAttribute-Enumeration

395

7.3.10 Verzeichnis einer Datei ermitteln

396

7.3.11 Alle im Verzeichnis enthaltene Dateien ermitteln

396

7.3.12 Dateien und Unterverzeichnisse ermitteln

396

7.4 Zugriffsberechtigungen

397

7.4.1 ACL und ACE

397

7.4.2 SetAccessControl-Methode

398

7.4.3 Zugriffsrechte anzeigen

398

7.5 Weitere wichtige Klassen

399

7.5.1 Die Path-Klasse

399

7.5.2 Die Klasse FileSystemWatcher

400

7.6 Datei- und Verzeichnisdialoge

402

7.6.1 OpenFileDialog und SaveFileDialog

402

Anzeige und Auswertung

402

Wichtige Eigenschaften

403

Dateifilter

403

7.6.2 FolderBrowserDialog

403

Die SpecialFolder-Enumeration

404

7.7 Praxisbeispiele

405

7.7.1 Infos über Verzeichnisse und Dateien gewinnen

405

Oberfläche

405

Quelltext

405

Test

407

7.7.2 Die Verzeichnisstruktur in eine TreeView einlesen

408

Oberfläche

408

Quellcode

408

Test

409

7.7.3 Mit LINQ und RegEx Verzeichnisbäume durchsuchen

410

Oberfläche

410

Quellcode

411

Test

413

Bemerkungen

414

8 Dateien lesen und schreiben

416

8.1 Grundprinzip der Datenpersistenz

416

8.1.1 Dateien und Streams

416

8.1.2 Die wichtigsten Klassen

417

8.1.3 Erzeugen eines Streams

418

8.2 Dateiparameter

418

8.2.1 FileAccess

418

8.2.2 FileMode

418

8.2.3 FileShare

419

8.3 Textdateien

419

8.3.1 Eine Textdatei beschreiben bzw. neu anlegen

419

WriteAllLines/AppendAllText

420

8.3.2 Eine Textdatei lesen

421

ReadAllLines/ReadLines

421

8.4 Binärdateien

423

8.4.1 Lese-/Schreibzugriff

423

8.4.2 Die Methoden ReadAllBytes und WriteAllBytes

423

8.4.3 BinaryReader/BinaryWriter erzeugen

424

8.5 Sequenzielle Dateien

424

8.5.1 Lesen und Schreiben von strukturierten Daten

424

8.5.2 Serialisieren von Objekten

425

8.6 Dateien verschlüsseln und komprimieren

426

8.6.1 Das Methodenpärchen Encrypt-/Decrypt

427

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

427

8.6.3 Verschlüsseln mit der CryptoStream-Klasse

428

8.6.4 Dateien komprimieren

429

8.7 Memory Mapped Files

430

8.7.1 Grundprinzip

430

8.7.2 Erzeugen eines MMF

431

CreateFromFile-Methode

431

CreateNew-Methode

431

8.7.3 Erstellen eines Map View

431

8.8 Praxisbeispiele

432

8.8.1 Auf eine Textdatei zugreifen

432

Oberfläche

433

Quellcode

433

Test

435

8.8.2 Einen Objektbaum speichern

436

Klassendiagramm

436

Klasse CBestellung

437

Klasse CPerson

438

Klasse CKunde

438

Klasse CFirma

438

Klasse CPersistent

439

Form1

440

Test

441

Anzeige mit DataGridView

442

8.8.3 Ein Memory Mapped File (MMF) verwenden

442

Oberfläche

443

Quellcode

443

Test

444

Bemerkungen

444

9 Asynchrone Programmierung

446

9.1 Übersicht

447

9.1.1 Multitasking versus Multithreading

447

9.1.2 Deadlocks

448

9.1.3 Racing

448

9.2 Programmieren mit Threads

450

9.2.1 Einführungsbeispiel

450

9.2.2 Wichtige Thread-Methoden

451

9.2.3 Wichtige Thread-Eigenschaften

453

9.2.4 Einsatz der ThreadPool-Klasse

454

9.3 Sperrmechanismen

456

9.3.1 Threading ohne SyncLock

456

9.3.2 Threading mit SyncLock

458

Ein anschauliches Beispiel

459

9.3.3 Die Monitor-Klasse

460

Wait und Pulse/PulseAll

461

TryEnter

463

9.3.4 Mutex

463

9.3.5 Methoden für die parallele Ausführung sperren

465

9.3.6 Semaphore

465

9.4 Interaktion mit der Programmoberfläche

467

9.4.1 Die Werkzeuge

467

9.4.2 Einzelne Steuerelemente mit Invoke aktualisieren

467

9.4.3 Mehrere Steuerelemente aktualisieren

469

9.4.4 Ist ein Invoke-Aufruf nötig?

469

9.4.5 Und was ist mit WPF?

470

9.5 Timer-Threads

471

9.6 Die BackgroundWorker-Komponente

472

9.7 Asynchrone Programmier-Entwurfsmuster

475

9.7.1 Kurzübersicht

475

Begin...-Methode

475

End...-Methode

475

Die Rückrufmethode

476

9.7.2 Polling

476

9.7.3 Callback verwenden

477

9.7.4 Callback mit Parameterübergabe verwenden

478

9.7.5 Callback mit Zugriff auf die Programm-Oberfläche

479

9.8 Asynchroner Aufruf beliebiger Methoden

480

9.8.1 Die Beispielklasse

480

9.8.2 Asynchroner Aufruf ohne Callback

482

9.8.3 Asynchroner Aufruf mit Callback und Anzeigefunktion

482

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 Await

485

9.9.1 Der Weg von synchron zu asynchron

485

9.9.2 Achtung: Fehlerquellen!

487

9.9.3 Eigene asynchrone Methoden entwickeln

489

9.10 Praxisbeispiele

491

9.10.1 Spieltrieb & Multithreading erleben

491

Aufgabenstellung

492

Oberfläche

492

Quelltext LKW

493

Quelltext Schiff

496

Quelltext Controller

498

Quelltext MyGlobal

500

Quelltext Form1

500

Test

502

Bemerkungen

503

9.10.2 Prozess- und Thread-Informationen gewinnen

503

Oberfläche

503

Quellcode

503

Test

507

9.10.3 Ein externes Programm starten

508

Oberfläche

508

Quelltext

508

Test

509

Ergänzungen

509

Bemerkung

510

10 Die Task Parallel Library

512

10.1 Überblick

512

10.1.1 Parallel-Programmierung

512

10.1.2 Möglichkeiten der TPL

515

10.1.3 Der CLR-Threadpool

515

10.2 Parallele Verarbeitung mit Parallel.Invoke

516

10.2.1 Aufrufvarianten

517

10.2.2 Einschränkungen

518

10.3 Verwendung von Parallel.For

518

10.3.1 Abbrechen der Verarbeitung

520

10.3.2 Auswerten des Verarbeitungsstatus

521

10.3.3 Und was ist mit anderen Iterator-Schrittweiten?

521

10.4 Collections mit Parallel.ForEach verarbeiten

522

10.5 Die Task-Klasse

523

10.5.1 Einen Task erzeugen

523

10.5.2 Task starten

524

10.5.3 Datenübergabe an den Task

525

10.5.4 Wie warte ich auf das Taskende?

526

10.5.5 Tasks mit Rückgabewerten

528

10.5.6 Die Verarbeitung abbrechen

531

Abbruch per Return

531

Abbruch per CancellationToken

532

10.5.7 Fehlerbehandlung

535

10.5.8 Weitere Eigenschaften

535

Task-Id

535

Status

536

IsCanceled, IsCompleted, IsFaulted

536

TaskCreationOptions

536

10.6 Zugriff auf das Userinterface

537

10.6.1 Task-Ende und Zugriff auf die Oberfläche

537

10.6.2 Zugriff auf das UI aus dem Task heraus

538

10.7 Weitere Datenstrukturen im Überblick

540

10.7.1 Threadsichere Collections

540

10.7.2 Primitive für die Threadsynchronisation

541

10.8 Parallel LINQ (PLINQ)

541

10.9 Die Parallel Diagnostic Tools

542

10.9.1 Fenster für parallele Aufgaben

542

10.9.2 Fenster für parallele Stacks

543

10.9.3 IntelliTrace

544

10.10 Praxisbeispiel: Spieltrieb – Version 2

544

10.10.1 Aufgabenstellung

544

10.10.2 Global-Klasse

545

10.10.3 Controller

546

10.10.4 LKWs

547

10.10.5 Schiff-Klasse

549

10.10.6 Oberfläche

551

11 Fehlersuche und Behandlung

554

11.1 Der Debugger

554

11.1.1 Allgemeine Beschreibung

554

11.1.2 Die wichtigsten Fenster

555

Befehlsfenster

555

Direktfenster

556

Lokal-Fenster

556

Überwachungsfenster

557

Autofenster

557

Ausgabefenster

557

11.1.3 Debugging-Optionen

558

Einzelschritt-Modus

559

Prozedurschritt-Modus

559

Breakpoints

559

11.1.4 Praktisches Debugging am Beispiel

560

Haltepunkte setzen

560

Abbruchbedingung setzen

561

Trefferanzahl verwenden

562

Einzelschritt-Modus

562

Prozedurschritt

563

Ausführen bis Rücksprung

563

Auswerten von Ausdrücken

563

11.2 Arbeiten mit Debug und Trace

564

11.2.1 Wichtige Methoden von Debug und Trace

564

Write, WriteLine, WriteIf und WriteLineIf

564

IndentLevel, Indent, IndentSize und UnIndent

566

Assert

566

Fail

567

11.2.2 Besonderheiten der Trace-Klasse

567

11.2.3 TraceListener-Objekte

568

TextWriterTraceListener

568

App.config zur Definition verwenden

569

EventLogTraceListener

570

11.3 Caller Information

571

11.3.1 Attribute

571

11.3.2 Anwendung

571

11.4 Fehlerbehandlung

572

11.4.1 Anweisungen zur Fehlerbehandlung

572

11.4.2 Try-Catch

572

Ausnahmen über Fehlerklassen auswerten

573

Spezifische Fehlerklassen auswerten

574

Fehler erneut auslösen

575

11.4.3 Try-Finally

577

11.4.4 Das Standardverhalten bei Ausnahmen festlegen

579

11.4.5 Die Exception-Klasse

580

11.4.6 Fehler/Ausnahmen auslösen

580

11.4.7 Eigene Fehlerklassen

581

11.4.8 Exceptionhandling zur Entwurfszeit

583

11.4.9 Code Contracts

583

12 Einführung in WPF

588

Und was ist mit Silverlight?

589

12.1 Neues aus der Gerüchteküche

589

12.1.1 Silverlight

589

12.1.2 WPF

589

12.2 Einführung

590

12.2.1 Was kann eine WPF-Anwendung?

590

12.2.2 Die eXtensible Application Markup Language

592

Eine erste XAML-Anwendung

593

Probleme mit dem Stammelement

594

Ein kleines Experiment

595

Soll ich das alles von Hand eintippen?

596

12.2.3 Verbinden von XAML und Basic-Code

596

Application.xaml

596

Application.xaml.vb

597

MainWindow.xaml

598

MainWindow.xaml.vb

599

Ein erster Ereignis-Handler

599

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 Zielplattformen

602

12.2.5 Applikationstypen

602

WPF-Anwendung

602

WPF-Browseranwendungen

603

12.2.6 Vorteile und Nachteile von WPF-Anwendungen

603

12.2.7 Weitere Dateien im Überblick

604

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 Layout

607

12.3.1 Allgemeines zum Layout

607

12.3.2 Positionieren von Steuerelementen

609

Was sind das überhaupt für Maßangaben?

609

Top/Left/Width/Height

610

MinWidth/MaxWidth/MinHeight/MaxHeight

610

Margin/Padding

611

HorizontalAlignment/VerticalAlignment

612

12.3.3 Canvas

612

12.3.4 StackPanel

613

12.3.5 DockPanel

615

12.3.6 WrapPanel

617

12.3.7 UniformGrid

617

12.3.8 Grid

619

Definition des Grundlayouts

619

Zuordnen von Kind-Elementen

621

Verwendung des GridSplitters

623

12.3.9 ViewBox

623

12.3.10 TextBlock

624

Textformatierungen

626

Besonderheit von Leerzeichen/Zeilenumbrüchen

626

Textausrichtung

627

12.4 Das WPF-Programm

627

12.4.1 Die Application-Klasse

628

12.4.2 Das Startobjekt festlegen

628

12.4.3 Kommandozeilenparameter verarbeiten

630

12.4.4 Die Anwendung beenden

630

12.4.5 Auswerten von Anwendungsereignissen

631

12.5 Die Window-Klasse

632

12.5.1 Position und Größe festlegen

632

12.5.2 Rahmen und Beschriftung

632

12.5.3 Das Fenster-Icon ändern

633

12.5.4 Anzeige weiterer Fenster

633

12.5.5 Transparenz

633

12.5.6 Abstand zum Inhalt festlegen

634

12.5.7 Fenster ohne Fokus anzeigen

635

12.5.8 Ereignisfolge bei Fenstern

635

12.5.9 Ein paar Worte zur Schriftdarstellung

636

TextOptions.TextFormattingMode

636

TextOptions.TextRenderingMode

637

12.5.10 Ein paar Worte zur Controldarstellung

638

12.5.11 Wird mein Fenster komplett mit WPF gerendert?

640

13 Übersicht WPF-Controls

642

13.1 Allgemeingültige Eigenschaften

642

13.2 Label

644

13.3 Button, RepeatButton, ToggleButton

644

13.3.1 Schaltflächen für modale Dialoge

645

13.3.2 Schaltflächen mit Grafik

646

13.4 TextBox, PasswortBox

647

13.4.1 TextBox

647

13.4.2 PasswordBox

649

13.5 CheckBox

650

13.6 RadioButton

651

13.7 ListBox, ComboBox

653

13.7.1 ListBox

653

13.7.2 ComboBox

656

13.7.3 Den Content formatieren

657

13.8 Image

659

13.8.1 Grafik per XAML zuweisen

659

13.8.2 Grafik zur Laufzeit zuweisen

659

13.8.3 Bild aus Datei laden

660

13.8.4 Die Grafikskalierung beeinflussen

661

13.9 MediaElement

662

13.10 Slider, ScrollBar

665

13.10.1 Slider

665

13.10.2 ScrollBar

666

13.11 ScrollViewer

667

13.12 Menu, ContextMenu

668

13.12.1 Menu

668

13.12.2 Tastenkürzel

669

13.12.3 Grafiken

670

13.12.4 Weitere Möglichkeiten

671

13.12.5 ContextMenu

672

13.13 ToolBar

673

Der ToolBarTray

674

13.14 StatusBar, ProgressBar

676

13.14.1 StatusBar

676

13.14.2 ProgressBar

678

13.15 Border, GroupBox, BulletDecorator

679

13.15.1 Border

679

13.15.2 GroupBox

680

13.15.3 BulletDecorator

681

13.16 RichTextBox

683

13.16.1 Verwendung und Anzeige von vordefiniertem Text

683

13.16.2 Neues Dokument zur Laufzeit erzeugen

685

13.16.3 Sichern von Dokumenten

685

13.16.4 Laden von Dokumenten

687

13.16.5 Texte per Code einfügen/modifizieren

688

13.16.6 Texte formatieren

689

13.16.7 EditingCommands

691

13.16.8 Grafiken/Objekte einfügen

691

13.16.9 Rechtschreibkontrolle

693

13.17 FlowDocumentPageViewer & Co.

693

13.17.1 FlowDocumentPageViewer

693

13.17.2 FlowDocumentReader

694

13.17.3 FlowDocumentScrollViewer

694

13.18 FlowDocument

694

13.18.1 FlowDocument per XAML beschreiben

695

13.18.2 FlowDocument per Code erstellen

697

13.19 DocumentViewer

698

13.20 Expander, TabControl

699

13.20.1 Expander

699

13.20.2 TabControl

701

13.21 Popup

702

13.22 TreeView

704

13.23 ListView

707

13.24 DataGrid

708

13.25 Calendar/DatePicker

708

DisplayMode

709

DisplayDate, SelectedDate und SelectedDates

709

Auswahlmodi

709

Sperrtage

711

Calendar skalieren

712

13.26 InkCanvas

712

13.26.1 Stift-Parameter definieren

713

13.26.2 Die Zeichenmodi

714

13.26.3 Inhalte laden und sichern

714

13.26.4 Konvertieren in eine Bitmap

715

13.26.5 Weitere Eigenschaften

716

13.27 Ellipse, Rectangle, Line und Co.

716

13.27.1 Ellipse

716

13.27.2 Rectangle

717

13.27.3 Line

717

13.28 Browser

718

13.29 Ribbon

720

13.29.1 Allgemeine Grundlagen

720

13.29.2 Download/Installation

722

13.29.3 Erste Schritte

722

13.29.4 Registerkarten und Gruppen

723

13.29.5 Kontextabhängige Registerkarten

724

13.29.6 Einfache Beschriftungen

725

13.29.7 Schaltflächen

726

Schaltflächen zusammenfassen

727

13.29.8 Auswahllisten

727

13.29.9 Optionsauswahl

730

13.29.10 Texteingaben

730

13.29.11 Screentips

731

13.29.12 Symbolleiste für den Schnellzugriff

732

13.29.13 Das RibbonWindow

732

13.29.14 Menüs

733

13.29.15 Anwendungsmenü

735

13.29.16 Alternativen

738

13.30 Chart

738

13.31 WindowsFormsHost

739

14 Wichtige WPF-Techniken

742

14.1 Eigenschaften

742

14.1.1 Abhängige Eigenschaften (Dependency Properties)

742

14.1.2 Angehängte Eigenschaften (Attached Properties)

743

14.2 Einsatz von Ressourcen

744

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 Ressourcen

747

14.2.5 Wie werden Ressourcen adressiert?

748

14.2.6 System-Ressourcen einbinden

749

14.3 Das WPF-Ereignis-Modell

749

14.3.1 Einführung

749

14.3.2 Routed Events

750

14.3.3 Direkte Events

752

14.4 Verwendung von Commands

752

14.4.1 Einführung in Commands

753

14.4.2 Verwendung vordefinierter Commands

753

14.4.3 Das Ziel des Commands

755

14.4.4 Vordefinierte Commands

756

14.4.5 Commands an Ereignismethoden binden

756

14.4.6 Wie kann ich ein Command per Code auslösen?

758

14.4.7 Command-Ausführung verhindern

758

14.5 Das WPF-Style-System

758

14.5.1 Übersicht

758

14.5.2 Benannte Styles

759

14.5.3 Typ-Styles

761

14.5.4 Styles anpassen und vererben

762

Styles anpassen (überschreiben)

762

Style ersetzen

762

Styles vererben

763

Styleänderung per Code

764

14.6 Verwenden von Triggern

764

14.6.1 Eigenschaften-Trigger (Property triggers)

764

14.6.2 Ereignis-Trigger

766

14.6.3 Daten-Trigger

767

14.7 Einsatz von Templates

768

14.7.1 Template abrufen und verändern

772

14.8 Transformationen, Animationen, StoryBoards

775

14.8.1 Transformationen

775

Drehen mit RotateTransform

776

Skalieren mit ScaleTransform

777

Verformen mit SkewTransform

777

Verschieben mit TranslateTransform

778

Und alles zusammen mit TransformGroup

778

14.8.2 Animationen mit dem StoryBoard realisieren

780

Animation per VB-Code realisieren

781

Animation per Code steuern

781

Mehrere Animationen zusammenfassen

784

14.9 Praxisbeispiel

784

14.9.1 Arbeiten mit Microsoft Expression Blend

784

Eine Animation realisieren

785

Der XAML-Code

786

Test

787

Bemerkung

787

15 WPF-Datenbindung

790

15.1 Grundprinzip

790

15.1.1 Bindungsarten

791

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 realisieren

794

15.2 Binden an Objekte

796

15.2.1 Objekte im Code instanziieren

796

15.2.2 Verwenden der Instanz im VB-Quellcode

797

15.2.3 Anforderungen an die Quell-Klasse

798

15.2.4 Instanziieren von Objekten per VB-Code

800

15.3 Binden von Collections

801

15.3.1 Anforderung an die Collection

801

15.3.2 Einfache Anzeige

802

15.3.3 Navigation zwischen den Objekten

803

15.3.4 Einfache Anzeige in einer ListBox

804

Verwendung von DisplayMemberPath

805

15.3.5 DataTemplates zur Anzeigeformatierung

806

15.3.6 Mehr zu List- und ComboBox

807

SelectedIndex

807

SelectedItem/SelectedItems

807

SelectedValuePath und SelectedValue

808

15.3.7 Verwenden der ListView

809

Einfache Bindung

809

Sortieren der Einträge

810

15.4 Noch einmal zurück zu den Details

811

15.4.1 Navigieren in den Daten

811

15.4.2 Sortieren

812

15.4.3 Filtern

813

15.4.4 Live Shaping

814

15.5 Anzeige von Datenbankinhalten

815

15.5.1 Datenmodell per LINQ to SQL-Designer erzeugen

815

15.5.2 Die Programm-Oberfläche

816

15.5.3 Der Zugriff auf die Daten

818

15.6 Drag & Drop-Datenbindung

819

15.6.1 Vorgehensweise

819

15.6.2 Weitere Möglichkeiten

822

15.7 Formatieren von Werten

823

15.7.1 IValueConverter

824

15.7.2 BindingBase.StringFormat-Eigenschaft

826

15.8 Das DataGrid als Universalwerkzeug

827

15.8.1 Grundlagen der Anzeige

828

UI-Virtualisierung

829

Spalten selbst definieren

829

Zusatzinformationen in den Zeilen anzeigen

831

15.8.2 Vom Betrachten zum Editieren

832

15.9 Praxisbeispiele

832

15.9.1 Collections in Hintergrundthreads füllen

832

Oberfläche

833

Das Problem

833

Lösung (bis .NET 4.0)

834

Test

835

Lösung (ab .NET 4.5)

835

Test

836

15.9.2 Drag & Drop-Bindung bei 1:n-Beziehungen

836

Oberfläche

836

Quellcode (XAML)

837

Quellcode (VB)

838

Test

839

16 Druckausgabe mit WPF

840

16.1 Grundlagen

840

16.1.1 XPS-Dokumente

840

16.1.2 System.Printing

841

16.1.3 System.Windows.Xps

842

16.2 Einfache Druckausgaben mit dem PrintDialog

842

16.3 Mehrseitige Druckvorschau-Funktion

845

16.3.1 Fix-Dokumente

845

Einsatzbeispiel

845

Die Klasse FixedPrintManager

849

16.3.2 Flow-Dokumente

851

Einführungsbeispiel

851

Die Klasse FlowPrintManager

853

16.4 Druckerinfos, -auswahl, -konfiguration

854

16.4.1 Die installierten Drucker bestimmen

855

16.4.2 Den Standarddrucker bestimmen

856

16.4.3 Mehr über einzelne Drucker erfahren

856

16.4.4 Spezifische Druckeinstellungen vornehmen

858

16.4.5 Direkte Druckausgabe

860

17 Erste Schritte in WinRT

864

17.1 Grundkonzepte und Begriffe

864

17.1.1 Windows Runtime (WinRT)

864

17.1.2 Windows Store Apps

865

17.1.3 Fast and Fluid

866

17.1.4 Process Sandboxing und Contracts

867

17.1.5 .NET WinRT-Profil

869

17.1.6 Language Projection

869

17.1.7 Vollbildmodus

871

17.1.8 Windows Store

871

17.1.9 Zielplattformen

872

17.2 Entwurfsumgebung

873

17.2.1 Betriebssystem

873

17.2.2 Windows-Simulator

874

17.2.3 Remote-Debugging

876

17.3 Ein (kleines) Einstiegsbeispiel

877

17.3.1 Aufgabenstellung

877

17.3.2 Quellcode

877

17.3.3 Oberflächenentwurf

880

17.3.4 Installation und Test

882

17.3.5 Verbesserungen

883

Persistenz

883

Touchscreen

885

17.3.6 Fazit

886

17.4 Weitere Details zu WinRT

888

17.4.1 Wo ist WinRT einzuordnen?

888

17.4.2 Die WinRT-API

889

Benutzerschnittstelle

890

Daten & Kommunikation

890

Geräte und Medien

891

Anwendungsdienste

891

17.4.3 Wichtige WinRT-Namespaces

891

17.4.4 Der Unterbau

892

Die Schnittstellen

892

Language Projection

893

Assemblies für WinRT

894

17.5 Gedanken zum Thema "WinRT & Tablets"

895

17.5.1 Windows 8-Oberfläche versus Desktop

895

17.5.2 Tablets und Touchscreens

895

17.6 Praxisbeispiel

897

17.6.1 WinRT in Desktop-Applikationen nutzen

897

Oberfläche

897

Quellcode

898

Test

899

Bemerkungen

899

18 WinRT-Oberflächen entwerfen

900

18.1 Grundkonzepte

900

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

901

18.1.2 Die Page, der Frame und das Window

902

18.1.3 Das Befehlsdesign

903

App-Leisten

904

Settingsbereich

905

18.1.4 Die Navigationsdesigns

905

18.1.5 Achtung: Fingereingabe!

906

18.1.6 Verwendung von Schriftarten

907

18.2 Projekttypen und Seitentemplates

907

18.2.1 Leere App

907

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 erstellen

915

18.3 Seitenauswahl und -navigation

916

18.3.1 Die Startseite festlegen

916

18.3.2 Navigation und Parameterübergabe

916

18.3.3 Den Seitenstatus erhalten

917

18.4 Die vier App-Ansichten

918

18.4.1 Vollbild quer und hochkant

918

18.4.2 Angedockt und Füllmodus

918

18.4.3 Reagieren auf die Änderung

919

SizeChanged auswerten

919

VisualStateManager

920

18.4.4 Angedockten Modus aktiv beenden

922

18.5 Skalieren von Apps

923

18.6 Praxisbeispiele

925

18.6.1 Seitennavigation und Parameterübergabe

925

Oberfläche BasicPage1

925

Quellcode BasicPage1

926

Oberfläche BasicPage2

926

Quellcode BasicPage2

926

Test

926

Bemerkung

927

18.6.2 Auf Ansichtsänderungen reagieren

927

Oberfläche & Quellcode BasicPage1

927

Oberfläche & Quellcode BlankPage1

927

Oberfläche der beiden Frame-Seiten

929

Oberfläche & Quellcode BasicPage2

929

Test

930

18.7 Tipps & Tricks

930

18.7.1 Symbole für WinRT-Oberflächen finden

930

18.7.2 Wie werde ich das Grufti-Layout schnell los?

931

19 Die wichtigsten Controls

934

19.1 Einfache WinRT-Controls

934

19.1.1 TextBlock, RichTextBlock

934

19.1.2 Button, HyperlinkButton, RepeatButton

937

19.1.3 CheckBox, RadioButton, ToggleButton, ToggleSwitch

939

19.1.4 TextBox, PasswordBox, RichEditBox

940

19.1.5 Image

944

19.1.6 ScrollBar, Slider, ProgressBar, ProgressRing

945

19.1.7 Border, Ellipse, Rectangle

947

19.2 Layout-Controls

948

19.2.1 Canvas

948

19.2.2 StackPanel

949

19.2.3 ScrollViewer

949

19.2.4 Grid

950

19.2.5 VariableSizedWrapGrid

951

19.3 Listendarstellungen

952

19.3.1 ComboBox, ListBox

952

19.3.2 ListView

956

19.3.3 GridView

958

19.3.4 FlipView

960

19.4 Sonstige Controls

962

19.4.1 CaptureElement

962

19.4.2 MediaElement

963

19.4.5 ToolTip

966

19.5 Praxisbeispiele

968

19.5.1 Einen StringFormat-Konverter implementieren

968

Quellcode Klasse StringFormatConverter

968

Verwendung des Konverters

969

Test

970

19.5.2 Besonderheiten der TextBox kennen lernen

970

Virtuelle Tastatur

970

Tasteneingaben validieren/filtern

972

19.5.3 Daten in der GridView gruppieren

973

Oberfläche

974

Quelltext

975

Test

976

Bemerkung

976

19.5.4 Das SemanticZoom-Control verwenden

978

Oberflächen

979

Quellcode

981

Test

982

19.5.5 Die CollectionViewSource verwenden

983

Oberfläche

983

Quelltext

984

Test

985

19.5.6 Zusammenspiel ListBox/AppBar

986

Oberfläche

986

Quelltext

987

Test

989

19.5.7 Musikwiedergabe im Hintergrund realisieren

989

Oberfläche

990

Quelltext

991

Test

993

Bemerkung

993

20 Apps im Detail

994

20.1 Ein Windows Store App-Projekt im Detail

994

20.1.1 Contracts und Extensions

995

20.1.2 AssemblyInfo.vb

996

20.1.3 Verweise

997

20.1.4 App.xaml und App.xaml.vb

998

20.1.5 Package.appxmanifest

999

Anwendungsbenutzeroberfläche

999

Funktionen

1000

Deklarationen

1002

Verpacken

1003

20.1.6 Application1_TemporaryKey.pfx

1003

20.1.7 MainPage.xaml & MainPage.xaml.vb

1003

20.1.8 Datentyp-Konverter/Hilfsklassen

1003

BooleanToVisibilityConverter.vb

1004

BooleanNegationConverter.vb

1005

RichTextColumns.vb

1005

SuspensionManager.vb

1005

LayoutAwarePage.vb

1006

20.1.9 StandardStyles.xaml

1006

20.1.10 Assets/Symbole

1007

20.1.11 Nach dem Kompilieren

1008

20.2 Der Lebenszyklus einer WinRT-App

1008

20.2.1 Möglichkeiten der Aktivierung von Apps

1010

20.2.2 Der Splash Screen

1012

20.2.3 Suspending

1012

20.2.4 Resuming

1013

20.2.5 Beenden von Apps

1014

20.2.6 Die Ausnahmen von der Regel

1015

20.2.7 Debuggen

1015

Verwendung einer Protokolldatei

1015

Debuggen mit DebugView

1017

Steuern der Programmzustände über Visual Studio

1018

Debuggen von Contract-aktivierten Apps

1018

20.3 Daten speichern und laden

1019

20.3.1 Grundsätzliche Überlegungen

1019

20.3.2 Worauf und wie kann ich zugreifen?

1019

20.3.3 Das AppData-Verzeichnis

1020

LocalFolder

1020

RoamingFolder

1021

TemporaryFolder

1021

20.3.4 Das Anwendungs-Installationsverzeichnis

1022

20.3.5 Das Downloads-Verzeichnis

1023

20.3.6 Sonstige Verzeichnisse

1024

20.3.7 Anwendungsdaten lokal sichern und laden

1025

20.3.8 Daten in der Cloud ablegen/laden (Roaming)

1027

20.3.9 Aufräumen

1029

20.3.10 Sensible Informationen speichern

1029

20.4 Praxisbeispiele

1031

20.4.1 Unterstützung für den Search-Contract bieten

1031

Oberfläche

1032

Quelltext (App.xaml.vb)

1033

Quelltext (SearchPage.xaml.vb)

1036

Quelltext (DetailPage.xaml.vb)

1036

Test

1037

Erweiterungen

1037

20.4.2 Die Auto-Play-Funktion unterstützen

1038

Anpassen Package.appxmanifest

1038

Quelltext

1040

Oberfläche

1041

Test

1041

20.4.3 Einen zusätzlichen Splash Screen einsetzen

1042

Oberfläche (ErsatzSplashscreen.xaml)

1042

Quellcode (App.xaml.vb)

1043

Quellcode (ErsatzSplashScreen.xaml.vb)

1043

Test

1044

20.4.4 Eine Dateiverknüpfung erstellen

1044

Oberfläche

1044

Quelltext (App.xaml.vb)

1045

Quelltext (BasicPage.xaml.vb)

1046

Test

1046

Ergänzungen

1047

21 WinRT-Techniken

1050

21.1 Arbeiten mit Dateien/Verzeichnissen

1050

21.1.1 Verzeichnisinformationen auflisten

1050

21.1.2 Unterverzeichnisse auflisten

1053

21.1.3 Verzeichnisse erstellen/löschen

1055

21.1.4 Dateien auflisten

1056

21.1.5 Dateien erstellen/schreiben/lesen

1058

Datei erstellen

1058

Schreibzugriff mit FileIO

1059

Schreibzugriff mit StreamWriter

1060

Lesezugriff mit FileIO

1061

Lesezugriff mit StreamReader

1061

21.1.6 Dateien kopieren/umbenennen/löschen

1062

21.1.7 Verwenden der Dateipicker

1064

FileOpenPicker

1064

FileSavePicker

1067

FolderPicker

1068

21.1.8 StorageFile-/StorageFolder-Objekte speichern

1070

21.1.9 Verwenden der Most Recently Used-Liste

1072

21.2 Datenaustausch zwischen Apps/Programmen

1073

21.2.1 Zwischenablage

1073

Texte kopieren und einfügen

1074

Bilder kopieren und einfügen

1076

Dateien kopieren/verschieben und abrufen

1077

Zwischenablage überwachen

1079

21.2.2 Teilen von Inhalten

1080

Funktion "Teilen" programmgesteuert aufrufen

1083

Sie möchten temporär keine Daten teilen

1083

21.2.3 Eine App als Freigabeziel verwenden

1084

21.2.4 Zugriff auf die Kontaktliste

1084

21.3 Spezielle Oberflächenelemente

1086

21.3.1 MessageDialog

1086

Dialog mit Auswahl

1087

Alternativen beim Auswerten der Tasten

1088

Ergänzungen

1089

21.3.2 Popup-Benachrichtigungen

1089

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ähigkeit

1096

21.3.3 PopUp/Flyouts

1097

21.3.4 Das PopupMenu einsetzen

1101

21.3.5 Eine AppBar verwenden

1103

21.4 Datenbanken und Windows Store Apps

1108

21.4.1 Der Retter in der Not: SQLite!

1108

21.4.2 Verwendung/Kurzüberblick

1108

Was eigentlich ist SQLite?

1108

Vorteile

1109

Nachteile

1109

21.4.3 Installation

1110

21.4.4 Wie kommen wir zu einer neuen Datenbank?

1112

21.4.5 Wie werden die Daten manipuliert?

1116

21.5 Vertrieb der App

1118

21.5.1 Verpacken der App

1118

21.5.2 Windows App Certification Kit

1120

21.5.3 App-Installation per Skript

1122

21.6 Ein Blick auf die App-Schwachstellen

1123

21.6.1 Quellcodes im Installationsverzeichnis

1123

21.6.2 Zugriff auf den App-Datenordner

1125

21.7 Praxisbeispiele

1125

21.7.1 Ein Verzeichnis auf Änderungen überwachen

1125

Oberfläche

1126

Quellcode

1126

Test

1127

21.7.2 Eine App als Freigabeziel verwenden

1128

Oberfläche

1128

Registrieren der App als Freigabeziel

1129

Quellcode (App.xaml.vb)

1130

Quellcode (InsertPage.xaml.vb)

1130

Test

1132

21.7.3 ToastNotifications einfach erzeugen

1133

Quellcode

1133

Test

1137

Index

1148

Ergänzungsband

1170

Zweites Vorwort

1194

22 XML in Theorie und Praxis

1198

22.1 XML – etwas Theorie

1198

22.1.1 Übersicht

1198

22.1.2 Der XML-Grundaufbau

1201

22.1.3 Wohlgeformte Dokumente

1202

22.1.4 Processing Instructions (PI)

1205

22.1.5 Elemente und Attribute

1205

22.1.6 Verwendbare Zeichensätze

1207

22.2 XSD-Schemas

1209

22.2.1 XSD-Schemas und ADO.NET

1209

22.2.2 XML-Schemas in Visual Studio analysieren

1211

Der XML-Schema-Explorer

1212

Ausgangsansicht des XML-Schema-Designer

1212

Inhaltsmodellansicht

1213

XML-Editor

1214

22.2.3 XML-Datei mit XSD-Schema erzeugen

1214

22.2.4 XSD-Schema aus einer XML-Datei erzeugen

1215

22.3 XML-Integration in Visual Basic

1216

22.3.1 XML-Literale

1216

22.3.2 Einfaches Navigieren durch späte Bindung

1219

22.3.3 Die LINQ to XML-API

1221

22.3.4 Neue XML-Dokumente erzeugen

1222

22.3.5 Laden und Sichern von XML-Dokumenten

1224

22.3.6 Navigieren in XML-Daten

1226

22.3.7 Auswählen und Filtern

1228

22.3.8 Manipulieren der XML-Daten

1228

Editieren der Daten

1229

Hinzufügen von Daten

1229

Löschen

1230

22.3.9 XML-Dokumente transformieren

1230

22.4 Verwendung des DOM unter .NET

1233

22.4.1 Übersicht

1233

22.4.2 DOM-Integration in Visual Basic

1234

22.4.3 Laden von Dokumenten

1234

22.4.4 Erzeugen von XML-Dokumenten

1235

22.4.5 Auslesen von XML-Dateien

1237

22.4.6 Direktzugriff auf einzelne Elemente

1238

22.4.7 Einfügen von Informationen

1239

22.4.8 Suchen in den Baumzweigen

1241

22.5 Weitere Möglichkeiten der XML-Verarbeitung

1245

22.5.1 Die relationale Sicht mit XmlDataDocument

1245

Laden von XML-Daten

1245

Verwendung des DataSets

1246

22.5.2 XML-Daten aus Objektstrukturen erzeugen

1248

22.5.3 Schnelles Suchen in XML-Daten mit XPathNavigator

1251

22.5.4 Schnelles Auslesen von XML-Daten mit XmlReader

1254

22.5.5 Erzeugen von XML-Daten mit XmlWriter

1256

22.5.6 XML transformieren mit XSLT

1258

22.6 Praxisbeispiele

1260

22.6.1 Mit dem DOM in XML-Dokumenten navigieren

1260

Oberfläche

1260

Quelltext

1261

Test

1262

Bemerkungen

1263

22.6.2 XML-Daten in eine TreeView einlesen

1263

Oberfläche

1263

Quelltext

1264

Test

1265

Ergänzung

1266

23 Einführung in ADO.NET

1268

23.1 Eine kleine Übersicht

1268

23.1.1 Die ADO.NET-Klassenhierarchie

1268

23.1.2 Die Klassen der Datenprovider

1269

.NET-Datenprovider

1270

Weitere Datenprovider

1270

Anzeige der installierten Datenprovider

1271

23.1.3 Das Zusammenspiel der ADO.NET-Klassen

1272

23.2 Das Connection-Objekt

1273

23.2.1 Allgemeiner Aufbau

1273

23.2.2 OleDbConnection

1273

Parameter für OleDb-Zugriff

1273

OleDb-Provider für Access Datenbank

1274

23.2.3 Schließen einer Verbindung

1275

23.2.4 Eigenschaften des Connection-Objekts

1275

ConnectionString-Eigenschaft

1275

Database- und DataSource-Eigenschaft

1276

Provider-Eigenschaft

1276

ServerVersion-Eigenschaft

1276

ConnectionTimeout-Eigenschaft

1277

State-Eigenschaft

1277

23.2.5 Methoden des Connection-Objekts

1277

Open- und Close-Methode

1277

ChangeDatabase-Methode

1278

CreateCommand-Methode

1278

23.2.6 Der ConnectionStringBuilder

1278

23.3 Das Command-Objekt

1279

23.3.1 Erzeugen und Anwenden eines Command-Objekts

1279

23.3.2 Erzeugen mittels CreateCommand-Methode

1280

23.3.3 Eigenschaften des Command-Objekts

1280

Connection- und CommandText-Eigenschaft

1280

CommandTimeout-Eigenschaft

1280

CommandType-Eigenschaft

1281

23.3.4 Methoden des Command-Objekts

1282

ExecuteNonQuery-Methode

1282

ExecuteReader-Methode

1282

ExecuteScalar-Methode

1283

23.3.5 Freigabe von Connection- und Command-Objekten

1283

23.4 Parameter-Objekte

1285

23.4.1 Erzeugen und Anwenden eines Parameter-Objekts

1285

23.4.2 Eigenschaften des Parameter-Objekts

1285

ParameterName- und Value-Eigenschaft

1285

DbType, OleDbType und SqlDbType-Eigenschaft

1286

Direction-Eigenschaft

1286

23.5 Das CommandBuilder-Objekt

1286

23.5.1 Erzeugen

1286

23.5.2 Anwenden

1287

23.6 Das DataReader-Objekt

1287

23.6.1 DataReader erzeugen

1288

23.6.2 Daten lesen

1288

23.6.3 Eigenschaften des DataReaders

1289

Item-Eigenschaft

1289

FieldCount-Eigenschaft

1289

IsClosed-Eigenschaft

1289

23.6.4 Methoden des DataReaders

1289

Read-Methode

1289

GetValue- und GetValues-Methode

1289

GetOrdinal- und ähnliche Methoden

1290

Bemerkungen

1290

23.7 Das DataAdapter-Objekt

1290

23.7.1 DataAdapter erzeugen

1290

Konstruktor mit SELECT-String und Connection-Objekt

1290

Konstruktor mit SelectCommand-Objekt

1291

23.7.2 Command-Eigenschaften

1291

23.7.3 Fill-Methode

1292

Begrenzen der Datenmenge

1292

23.7.4 Update-Methode

1293

23.8 Praxisbeispiele

1294

23.8.1 Wichtige ADO.NET-Objekte im Einsatz

1294

Oberfläche

1294

Quellcode

1294

Test

1295

Bemerkungen

1296

23.8.2 Eine Aktionsabfrage ausführen

1296

Oberfläche

1296

Quellcode

1296

Test

1297

Bemerkungen

1298

23.8.3 Eine Auswahlabfrage aufrufen

1298

Oberfläche

1299

Quellcode

1299

Test

1300

23.8.4 Die Datenbank aktualisieren

1300

Oberfläche

1301

Quellcode (Command-Objekte selbst programmiert)

1301

Test

1302

Bemerkungen

1303

23.8.5 Den ConnectionString speichern

1303

Oberfläche

1303

Anwendungseinstellungen eintragen

1303

Quellcode

1304

Test

1305

24 Das DataSet

1306

24.1 Grundlegende Features des DataSets

1306

24.1.1 Die Objekthierarchie

1307

24.1.2 Die wichtigsten Klassen

1307

24.1.3 Erzeugen eines DataSets

1308

Copy-Methode

1308

Clone-Methode

1309

GetChanges-/HasChanges-Methode

1309

24.2 Das DataTable-Objekt

1310

24.2.1 DataTable erzeugen

1310

24.2.2 Spalten hinzufügen

1310

24.2.3 Zeilen zur DataTable hinzufügen

1311

NewRow-Methode

1311

ImportRow-Methode

1311

24.2.4 Auf den Inhalt einer DataTable zugreifen

1312

Columns- und Rows-Eigenschaften

1312

TableName- und ColumnName-Eigenschaften

1312

Find-Methode

1313

Zeilen löschen

1313

24.3 Die DataView

1314

24.3.1 Erzeugen eines DataView

1314

24.3.2 Sortieren und Filtern von Datensätzen

1314

24.3.3 Suchen von Datensätzen

1315

24.4 Typisierte DataSets

1315

24.4.1 Ein typisiertes DataSet erzeugen

1316

24.4.2 Das Konzept der Datenquellen

1317

24.4.3 Typisierte DataSets und TableAdapter

1318

Warum sollte man ein typisiertes DataSet einsetzen?

1318

Der TableAdapter

1319

24.5 Die Qual der Wahl

1319

24.5.1 DataReader – der schnelle Lesezugriff

1320

24.5.2 DataSet – die Datenbank im Hauptspeicher

1320

Typisiertes versus untypisiertes DataSet

1320

24.5.3 Objektrelationales Mapping – die Zukunft?

1321

LINQ to SQL/LINQ to Entities

1321

24.6 Praxisbeispiele

1322

24.6.1 Im DataView sortieren und filtern

1322

Oberfläche

1322

Quellcode

1323

Test

1323

Bemerkungen

1324

24.6.2 Suche nach Datensätzen

1324

Oberfläche

1324

Quellcode

1324

Test

1325

24.6.3 Ein DataSet in einen XML-String serialisieren

1326

Konvertierungsmethoden

1326

Testoberfläche Form1

1327

Quellcode Form1

1327

Erzeugen eines untypisierten DataSets als Testobjekt

1328

Test

1329

24.6.4 Untypisierte in typisierte DataSets konvertieren

1330

Konvertierungscode

1331

Normales DataSet erzeugen

1331

Typisiertes DataSet erzeugen

1332

Oberfläche

1333

Test

1334

Bemerkungen

1335

24.6.5 Eine LINQ to SQL-Abfrage ausführen

1335

Datenmodell per LINQ to SQL-Designer erzeugen

1335

Datenquelle hinzufügen

1336

Oberfläche

1337

Test

1338

Bemerkung

1338

25 OOP-Spezial

1340

25.1 Eine kleine Einführung in die UML

1340

25.1.1 Use Case-Diagramm

1340

25.1.2 Use Case-Dokumentation

1342

USE CASE: Inbetriebnahme des Autos

1342

USE CASE: Versuchter Diebstahl des Autos

1343

25.1.3 Objekte identifizieren

1343

25.1.4 Statisches Modell

1344

25.1.5 Beziehungen zwischen den Klassen

1345

25.1.6 Dynamisches Modell

1345

Relevante Zustände identifizieren

1345

Zustandsüberführungs­diagramm

1346

25.1.7 Implementierung

1346

Klasse CSchlüssel

1347

Klasse CSchloss

1347

Klasse CAuto

1348

25.1.8 Test-Client

1350

Test

1352

Bemerkungen

1352

25.2 Der Klassen-Designer

1353

25.2.1 Ein neues Klassendiagramm erzeugen

1353

25.2.2 Werkzeugkasten

1355

25.2.3 Enumeration

1356

25.2.4 Klasse

1357

Klassendetails-Fenster

1359

25.2.5 Struktur

1359

25.2.6 Abstrakte Klasse

1360

25.2.7 Schnittstelle

1362

25.2.8 Delegate

1364

25.2.9 Zuordnung

1366

25.2.10 Vererbung

1367

25.2.11 Diagramme anpassen

1367

25.2.12 Wann sollten Sie den Klassen-Designer verwenden?

1368

25.3 Praxisbeispiele

1368

25.3.1 Implementierung einer Finite State Machine

1368

Zustandsüberführungsmatrix

1369

CAuto

1372

Clientcode

1374

Test

1374

25.3.2 Modellierung des Bestellsystems einer Firma

1374

Klassendiagramm

1374

Klasse CBestellung

1375

Klasse CPerson

1377

Klasse CKunde

1378

Klasse CFirma

1381

Klasse Form1

1382

Klassendiagramm vervollständigen

1384

Abschlusstest

1385

Bemerkungen

1386

26 Das Microsoft Event Pattern

1388

26.1 Einführung in Design Pattern

1388

26.2 Aufbau und Bedeutung des Observer Pattern

1389

26.2.1 Subjekt und Observer

1390

26.2.2 Sequenzdiagramme

1391

26.2.3 Die Registration-Sequenz

1391

26.2.4 Die Notification-Sequenz

1392

26.2.5 Die Unregistration-Sequenz

1392

26.2.6 Bedeutung der Sequenzen für das Geschäftsmodell

1393

26.2.7 Die Rolle des Containers

1393

26.3 Implementierung mit Interfaces und Callbacks

1394

26.3.1 Übersicht und Klassendiagramm

1394

26.3.2 Schnittstellen IObserver und IObservable

1396

26.3.3 Die abstrakte Klasse Subject

1396

26.3.4 Observer1

1397

26.3.5 Observer2

1398

26.3.6 Model

1399

26.3.7 Form1

1400

26.3.8 Ein zweites Klassendiagramm

1401

26.3.9 Testen

1402

26.4 Implementierung mit Delegates und Events

1403

26.4.1 Multicast-Events

1404

26.4.2 IObserver, IObservable und Subject

1404

26.4.3 Observer1 und Observer2

1405

26.4.4 Model

1405

26.4.5 Form1

1405

26.4.6 Test und Vergleich

1406

26.4.7 Klassendiagramm

1407

26.5 Implementierung des Microsoft Event Pattern

1408

26.5.1 Namensgebung für Ereignisse

1408

26.5.2 Namensgebung und Signatur der Delegates

1408

26.5.3 Hinzufügen einer das Ereignis auslösenden Methode

1409

26.5.4 Neue Klasse NumberChangedEventArgs

1409

26.5.5 Model

1410

26.5.6 Observer1

1411

26.5.7 Form1

1411

26.6 Test und Vergleich

1412

26.7 Klassendiagramm

1412

26.8 Implementierung eines Event Pattern

1413

26.9 Praxisbeispiel

1414

26.9.1 Subjekt und Observer beobachten sich gegenseitig

1414

Oberfläche

1414

NumberChangedEventArgs und MaximumChangedEventArgs

1415

Model

1415

Observer1

1417

Observer2

1418

Form1

1419

Test und Vergleich

1421

Klassendiagramm

1421

Klassenzusammenstellung

1422

27 Verteilen von Anwendungen

1424

27.1 ClickOnce-Deployment

1425

27.1.1 Übersicht/Einschränkungen

1425

27.1.2 Die Vorgehensweise

1426

27.1.3 Ort der Veröffentlichung

1426

27.1.4 Anwendungsdateien

1427

27.1.5 Erforderliche Komponenten

1427

27.1.6 Aktualisierungen

1428

27.1.7 Veröffentlichungsoptionen

1429

27.1.8 Veröffentlichen

1430

27.1.9 Verzeichnisstruktur

1430

27.1.10 Der Webpublishing-Assistent

1432

27.1.11 Neue Versionen erstellen

1433

27.2 InstallShield

1433

27.2.1 Installation

1433

27.2.2 Aktivieren

1434

27.2.3 Ein neues Setup-Projekt

1434

Anwendungseinstellungen

1435

Installationsbedingungen

1436

Optionales Setup

1437

Anwendungsdateien

1437

Startmenü und Verknüpfungen

1438

Registrierungseinträge

1438

Setup-Dialoge/Erscheinungsbild

1439

Installationsdateien

1441

27.2.4 Finaler Test

1442

28 Weitere Techniken

1444

28.1 Zugriff auf die Zwischenablage

1444

28.1.1 Das Clipboard-Objekt

1444

Kopieren

1445

Einfügen

1445

28.1.2 Zwischenablage-Funktionen für Textboxen

1446

28.2 Arbeiten mit der Registry

1446

28.2.1 Allgemeines

1447

28.2.2 Registry-Unterstützung in .NET

1448

28.3 .NET-Reflection

1450

28.3.1 Übersicht

1450

28.3.2 Assembly laden

1450

28.3.3 Mittels GetType und Type Informationen sammeln

1451

28.3.4 Dynamisches Laden von Assemblies

1453

Beispiel

1453

28.4 Das SerialPort-Control

1455

28.4.1 Übersicht

1456

Wichtige Eigenschaften

1456

Wichtige Methoden

1456

Wichtige Ereignisse

1457

28.4.2 Einführungsbeispiele

1457

SerialPortTalker

1457

SerialPortListener

1458

Test

1458

28.4.3 Thread-Probleme bei Windows Forms-Anwendungen

1459

28.4.4 Ein einfaches Terminalprogramm

1461

Bedienoberfläche

1461

Quellcode

1462

Test

1465

Bemerkungen zur Verarbeitung von Messdaten

1465

28.5 Praxisbeispiele

1466

28.5.1 Zugriff auf die Registry

1466

Oberfläche

1466

Quelltext

1466

Test

1468

28.5.2 Dateiverknüpfungen erzeugen

1468

29 Konsolenanwendungen

1470

29.1 Grundaufbau/Konzepte

1470

29.1.1 Unser Hauptprogramm – Module1.vb

1471

Sub Main()

1472

29.1.2 Rückgabe eines Fehlerstatus

1472

29.1.3 Parameterübergabe

1473

29.1.4 Zugriff auf die Umgebungsvariablen

1475

29.2 Die Kommandozentrale: System.Console

1476

29.2.1 Eigenschaften

1476

29.2.2 Methoden/Ereignisse

1476

29.2.3 Textausgaben

1477

29.2.4 Farbangaben

1478

29.2.5 Tastaturabfragen

1479

Modifiers-Eigenschaft und ConsoleModifiers-Enumeration

1480

29.2.6 Arbeiten mit Streamdaten

1480

29.3 Praxisbeispiel: Farbige Konsolenanwendung

1482

30 Windows Forms-Anwendungen

1486

30.1 Grundaufbau/Konzepte

1486

30.1.1 Wo ist das Hauptprogramm?

1487

Visuelle XP-Stile aktivieren

1489

Einzelinstanzanwendung erstellen

1489

My.Settings beim Herunterfahren speichern

1490

Authentifizierungsmodus

1490

Modus für das Herunterfahren

1490

Begrüßungsbildschirm

1490

Anwendungsereignisse

1490

Und was ist mit einer eigenen Sub Main?

1491

30.1.2 Die Oberflächendefinition – Form1.Designer.vb

1492

30.1.3 Die Spielwiese des Programmierers – Form1.vb

1493

30.1.4 Die Datei AssemblyInfo.vb

1494

30.1.5 Resources.resx/Resources.Designer.vb

1495

30.1.6 Settings.settings/Settings.Designer.vb

1496

30.2 Ein Blick auf die Application-Klasse

1498

30.2.1 Eigenschaften

1498

30.2.2 Methoden

1499

30.2.3 Ereignisse

1500

30.3 Allgemeine Eigenschaften von Komponenten

1501

30.3.1 Font

1502

30.3.2 Handle

1503

30.3.3 Tag

1504

30.3.4 Modifiers

1504

30.4 Allgemeine Ereignisse von Komponenten

1505

30.4.1 Die Eventhandler-Argumente

1505

30.4.2 Sender

1505

30.4.3 Der Parameter e

1507

30.4.4 Mausereignisse

1507

Tastaturereignisse

1508

30.4.5 KeyPreview

1509

30.4.6 Weitere Ereignisse

1510

30.4.7 Validierung

1511

30.4.8 SendKeys

1511

30.5 Allgemeine Methoden von Komponenten

1512

31 Windows Forms-Formulare

1514

31.1 Übersicht

1514

31.1.1 Wichtige Eigenschaften des Form-Objekts

1515

Controls-Auflistung

1516

31.1.2 Wichtige Ereignisse des Form-Objekts

1517

31.1.3 Wichtige Methoden des Form-Objekts

1518

31.2 Praktische Aufgabenstellungen

1519

31.2.1 Fenster anzeigen

1519

Nichtmodale Fenster

1519

Modale Fenster (Dialoge)

1520

31.2.2 Splash Screens beim Anwendungsstart anzeigen

1522

31.2.3 Eine Sicherheitsabfrage vor dem Schließen anzeigen

1524

31.2.4 Ein Formular durchsichtig machen

1525

31.2.5 Die Tabulatorreihenfolge festlegen

1525

31.2.6 Ausrichten und Platzieren von Komponenten

1526

Dock

1526

Anchor

1528

31.2.7 Spezielle Panels für flexibles Layout

1529

SplitContainer

1529

FlowLayoutPanel

1529

TableLayoutPanel

1530

31.2.8 Menüs erzeugen

1530

MenuStrip

1531

ContextMenuStrip

1532

Weitere Eigenschaften von Menüeinträgen

1533

31.3 MDI-Anwendungen

1534

31.3.1 "Falsche" MDI-Fenster bzw. Verwenden von Parent

1534

31.3.2 Die echten MDI-Fenster

1535

31.3.3 Die Kindfenster

1536

31.3.4 Automatisches Anordnen der Kindfenster

1537

31.3.5 Zugriff auf die geöffneten MDI-Kindfenster

1539

31.3.6 Zugriff auf das aktive MDI-Kindfenster

1539

31.3.7 Mischen von Kindfenstermenü/MDIContainer-Menü

1539

AllowMerge

1540

MergeAction und MergeIndex

1540

31.4 Praxisbeispiele

1540

31.4.1 Informationsaustausch zwischen Formularen

1540

Überblick

1540

Bedienoberfläche Form1 (Hauptformular)

1541

Bedienoberfläche Form2, Form3, Form4, Form5, Form6 (unterge­ordnete Formulare)

1541

Allgemeiner Code für Form1

1542

Variante 1: Übergabe der Formular-Referenz im Konstruktor

1543

Variante 2: Übergabe der Formular-Referenz als Eigenschaft

1544

Variante 3: Übergabe der Formular-Referenz als globale Variable

1545

Variante 4: Übergabe der Formular-Referenz als Ownership

1546

Variante 5: Verwendung der Standardinstanzen der Formulare

1547

31.4.2 Ereigniskette beim Laden/Entladen eines Formulars

1548

Bedienoberfläche (Form1 und Form2)

1548

Anderes Startformular auswählen

1549

Quellcode von Form1

1549

Quellcode von Form2

1551

Test

1551

Bemerkungen

1552

32 Komponenten-Übersicht

1554

32.1 Allgemeine Hinweise

1554

32.1.1 Hinzufügen von Komponenten

1554

32.1.2 Komponenten zur Laufzeit per Code erzeugen

1555

32.2 Allgemeine Steuerelemente

1557

32.2.1 Label

1557

32.2.2 LinkLabel

1558

Wichtige Eigenschaften

1558

Hyperlink einfügen

1558

32.2.3 Button

1559

32.2.4 TextBox

1560

Mehrzeilige Textboxen

1560

Markieren von Text

1561

PasswordChar

1562

Automatisches Vervollständigen

1562

32.2.5 MaskedTextBox

1563

32.2.6 CheckBox

1564

32.2.7 RadioButton

1566

32.2.8 ListBox

1567

32.2.9 CheckedListBox

1568

32.2.10 ComboBox

1569

32.2.11 PictureBox

1570

32.2.12 DateTimePicker

1570

32.2.13 MonthCalendar

1571

32.2.14 HScrollBar, VScrollBar

1571

32.2.15 TrackBar

1572

32.2.16 NumericUpDown

1573

32.2.17 DomainUpDown

1574

32.2.18 ProgressBar

1574

32.2.19 RichTextBox

1575

32.2.20 ListView

1576

ListViewItem

1576

ImageList

1577

Übersichten zur ListView

1577

32.2.21 TreeView

1582

Knoten zur Laufzeit erzeugen

1583

Auswerten des aktiven Knotens

1584

Wichtige Eigenschaften von TreeView

1585

Wichtige Methoden von TreeView

1586

Wichtige Ereignisse von TreeView

1586

Wichtige Eigenschaften von TreeNode

1586

Wichtige Methoden von TreeNode

1587

32.2.22 WebBrowser

1587

32.3 Container

1588

32.3.1 FlowLayout/TableLayout/SplitContainer

1588

32.3.2 Panel

1588

Oberflächen gestalten

1588

32.3.3 GroupBox

1589

32.3.4 TabControl

1590

Wichtige Eigenschaften

1591

Wichtige Ereignisse

1591

32.3.5 ImageList

1592

32.4 Menüs & Symbolleisten

1593

32.4.1 MenuStrip und ContextMenuStrip

1593

32.4.2 ToolStrip

1593

32.4.3 StatusStrip

1593

32.4.4 ToolStripContainer

1594

32.5 Daten

1594

32.5.1 DataSet

1594

32.5.2 DataGridView/DataGrid

1595

32.5.3 BindingNavigator/BindingSource

1595

32.5.4 Chart

1595

32.6 Komponenten

1596

32.6.1 ErrorProvider

1597

32.6.2 HelpProvider

1597

32.6.3 ToolTip

1597

32.6.4 Timer

1597

32.6.5 BackgroundWorker

1597

32.6.6 SerialPort

1598

32.7 Drucken

1598

32.7.1 PrintPreviewControl

1598

32.7.2 PrintDocument

1598

32.8 Dialoge

1598

32.8.1 OpenFileDialog/SaveFileDialog/FolderBrowserDialog

1598

32.8.2 FontDialog/ColorDialog

1598

32.9 WPF-Unterstützung mit dem ElementHost

1599

32.10 Praxisbeispiele

1599

32.10.1 Mit der CheckBox arbeiten

1599

Oberfläche

1599

Quellcode

1600

Test

1600

32.10.2 Steuerelemente per Code selbst erzeugen

1601

Oberfläche

1601

Quellcode

1601

Test

1602

Bemerkungen

1603

32.10.3 Controls-Auflistung im TreeView anzeigen

1603

Oberfläche

1603

Quellcode

1605

Test

1606

32.10.4 WPF-Komponenten mit dem ElementHost anzeigen

1606

Oberfläche (WPF-Control)

1607

Oberfläche (Windows Forms)

1609

33 Grundlagen der Grafikausgabe

1612

33.1 Übersicht und erste Schritte

1612

33.1.1 GDI+ – Ein erster Blick für Umsteiger

1613

Ein zentrales Grafikausgabe-Objekt

1613

Die Grafikausgabe ist zustandslos

1613

Prinzipieller Ablauf

1613

Wichtige Features

1614

33.1.2 Namespaces für die Grafikausgabe

1614

System.Drawing

1614

System.Drawing.Drawing2D

1615

System.Drawing.Imaging

1615

System.Drawing.Printing

1615

System.Drawing.Design

1616

System.Drawing.Text

1616

33.2 Darstellen von Grafiken

1616

33.2.1 Die PictureBox-Komponente

1616

33.2.2 Das Image-Objekt

1617

33.2.3 Laden von Grafiken zur Laufzeit

1618

33.2.4 Sichern von Grafiken

1618

Spezielle Einstellungen

1619

33.2.5 Grafikeigenschaften ermitteln

1619

Breite und Höhe der Grafik

1619

Auflösung

1619

Grafiktyp

1619

Interner Bitmap-Aufbau

1620

33.2.6 Erzeugen von Vorschaugrafiken (Thumbnails)

1620

33.2.7 Die Methode RotateFlip

1621

33.2.8 Skalieren von Grafiken

1622

33.3 Das .NET-Koordinatensystem

1623

33.3.1 Globale Koordinaten

1624

33.3.2 Seitenkoordinaten (globale Transformation)

1625

Translation (Verschiebung)

1625

Skalierung (Vergrößerung/Verkleinerung)

1625

Rotation

1626

33.3.3 Gerätekoordinaten (Seitentransformation)

1627

33.4 Grundlegende Zeichenfunktionen von GDI+

1628

33.4.1 Das zentrale Graphics-Objekt

1628

Wie erzeuge ich ein Graphics-Objekt?

1629

Die Invalidate-Methode

1630

Die Eigenschaft ResizeRedraw

1630

33.4.2 Punkte zeichnen/abfragen

1631

33.4.3 Linien

1632

33.4.4 Kantenglättung mit Antialiasing

1633

33.4.5 PolyLine

1634

33.4.6 Rechtecke

1634

DrawRectangle

1634

FillRectangle

1635

DrawRectangles/FillRectangles

1635

33.4.7 Polygone

1636

33.4.8 Splines

1636

33.4.9 Bézierkurven

1638

33.4.10 Kreise und Ellipsen

1639

33.4.11 Tortenstück (Segment)

1639

Kuchendiagramme

1640

33.4.12 Bogenstück

1641

33.4.13 Wo sind die Rechtecke mit den "runden Ecken"?

1641

33.4.14 Textausgabe

1643

Texteigenschaften

1643

Ausgabe von mehrzeiligem Text

1644

Textattribute

1644

Ausgabequalität

1645

Und wo bleibt eine Methode zum Drehen von Text?

1646

33.4.15 Ausgabe von Grafiken

1647

Skalieren

1647

33.5 Unser Werkzeugkasten

1648

33.5.1 Einfache Objekte

1648

Point, FPoint

1648

Size, FSize

1648

Rectangle, FRectangle

1649

33.5.2 Vordefinierte Objekte

1649

Vordefinierte Pinsel

1649

Vordefinierte Stifte

1650

Vordefinierte Farben

1650

Vordefinierte Icons

1650

33.5.3 Farben/Transparenz

1651

ARGB-Farben

1651

Was ist mit dem höchstwertigen Byte?

1652

33.5.4 Stifte (Pen)

1653

Einfarbige Stifte

1653

Stifte mit Füllung

1655

33.5.5 Pinsel (Brush)

1656

33.5.6 SolidBrush

1656

33.5.7 HatchBrush

1656

33.5.8 TextureBrush

1658

33.5.9 LinearGradientBrush

1658

33.5.10 PathGradientBrush

1660

33.5.11 Fonts

1661

33.5.12 Path-Objekt

1662

Füllen

1663

Fillmode

1664

33.5.13 Clipping/Region

1665

Regions

1666

Clipping

1667

33.6 Standarddialoge

1668

33.6.1 Schriftauswahl

1668

33.6.2 Farbauswahl

1669

33.7 Praxisbeispiele

1671

33.7.1 Ein Graphics-Objekt erzeugen

1671

Variante 1: Verwendung des Paint-Events

1672

Test

1672

Variante 2: Überschreiben der OnPaint-Methode

1672

Test

1673

Variante 3: Graphics-Objekt mit CreateGraphics erzeugen

1673

Test

1673

Variante 4: Verwendung des Graphics-Objekts einer PictureBox

1674

33.7.2 Zeichenoperationen mit der Maus realisieren

1674

Oberfläche

1674

Quelltext

1674

Test

1677

34 Druckausgabe

1678

34.1 Einstieg und Übersicht

1678

34.1.1 Nichts geht über ein Beispiel

1678

34.1.2 Programmiermodell

1680

34.1.3 Kurzübersicht der Objekte

1681

34.2 Auswerten der Druckereinstellungen

1681

34.2.1 Die vorhandenen Drucker

1681

34.2.2 Der Standarddrucker

1682

34.2.3 Verfügbare Papierformate/Seitenabmessungen

1682

34.2.4 Der eigentliche Druckbereich

1684

34.2.5 Die Seitenausrichtung ermitteln

1684

34.2.6 Ermitteln der Farbfähigkeit

1685

34.2.7 Die Druckauflösung abfragen

1685

34.2.8 Ist beidseitiger Druck möglich?

1686

34.2.9 Einen "Informationsgerätekontext" erzeugen

1686

34.2.10 Abfragen von Werten während des Drucks

1687

34.3 Festlegen von Druckereinstellungen

1688

34.3.1 Einen Drucker auswählen

1688

34.3.2 Drucken in Millimetern

1688

34.3.3 Festlegen der Seitenränder

1689

34.3.4 Druckjobname

1690

34.3.5 Die Anzahl der Kopien festlegen

1690

34.3.6 Beidseitiger Druck

1691

34.3.7 Seitenzahlen festlegen

1692

34.3.8 Druckqualität verändern

1695

34.3.9 Ausgabemöglichkeiten des Chart-Controls nutzen

1695

34.4 Die Druckdialoge verwenden

1696

34.4.1 PrintDialog

1696

34.4.2 PageSetupDialog

1697

Probleme mit den Rändern

1698

34.4.3 PrintPreviewDialog

1699

34.4.4 Ein eigenes Druckvorschau-Fenster realisieren

1700

34.5 Drucken mit OLE-Automation

1701

34.5.1 Kurzeinstieg in die OLE-Automation

1701

Programmieren der OLE-Automation

1702

New

1702

GetObject und CreateObject

1703

34.5.2 Drucken mit Microsoft Word

1704

34.6 Praxisbeispiele

1706

34.6.1 Den Drucker umfassend konfigurieren

1706

Oberfläche (Hauptformular Form1)

1707

Oberfläche (Druckvorschau Form2)

1707

Quelltext (Form1)

1708

Quelltext (Form2)

1713

Test

1714

34.6.2 Diagramme mit dem Chart-Control drucken

1716

Oberfläche

1716

Quelltext

1716

Test

1717

34.6.3 Drucken mit Word

1718

Oberfläche

1718

Quelltext

1719

Test

1721

Anmerkung ab .NET 4

1722

35 Windows Forms-Datenbindung

1724

35.1 Prinzipielle Möglichkeiten

1724

35.2 Manuelle Bindung an einfache Datenfelder

1725

35.2.1 BindingSource erzeugen

1725

35.2.2 Binding-Objekt

1726

35.2.3 DataBindings-Collection

1726

Bemerkungen

1726

35.3 Manuelle Bindung an Listen und Tabellen

1726

35.3.1 DataGridView

1727

35.3.2 Datenbindung von ComboBox und ListBox

1727

35.4 Entwurfszeit-Bindung an typisierte DataSets

1727

35.5 Drag & Drop-Datenbindung

1729

35.6 Navigations- und Bearbeitungsfunktionen

1729

35.6.1 Navigieren zwischen den Datensätzen

1729

35.6.2 Hinzufügen und Löschen

1729

35.6.3 Aktualisieren und Abbrechen

1730

35.6.4 Verwendung des BindingNavigators

1730

35.7 Die Anzeigedaten formatieren

1731

35.8 Praxisbeispiele

1731

35.8.1 Einrichten und Verwenden einer Datenquelle

1731

Assistent zum Konfigurieren von Datenquellen

1731

Verwenden der Datenquelle

1733

Test

1734

Abfragemethoden hinzufügen

1734

35.8.2 Eine Auswahlabfrage im DataGridView anzeigen

1735

Oberfläche

1736

Quellcode

1736

Test

1737

35.8.3 Master-Detailbeziehungen im DataGrid anzeigen

1738

Oberfläche

1738

Quellcode

1738

Test

1739

35.8.4 Datenbindung Chart-Control

1739

Oberfläche

1740

Quellcode

1743

Test

1743

36 Erweiterte Grafikausgabe

1744

36.1 Transformieren mit der Matrix-Klasse

1744

36.1.1 Übersicht

1744

36.1.2 Translation

1745

36.1.3 Skalierung

1745

36.1.4 Rotation

1746

36.1.5 Scherung

1746

36.1.6 Zuweisen der Matrix

1747

36.2 Low-Level-Grafikmanipulationen

1747

36.2.1 Worauf zeigt Scan0?

1748

36.2.2 Anzahl der Spalten bestimmen

1749

36.2.3 Anzahl der Zeilen bestimmen

1750

36.2.4 Zugriff im Detail (erster Versuch)

1750

36.2.5 Zugriff im Detail (zweiter Versuch)

1752

Weiter optimieren

1753

36.2.6 Invertieren

1754

36.2.7 In Graustufen umwandeln

1755

36.2.8 Heller/Dunkler

1756

36.2.9 Kontrast

1757

36.2.10 Gamma-Wert

1758

36.2.11 Histogramm spreizen

1759

36.2.12 Ein universeller Grafikfilter

1761

Beispiel: Eine universelle Filter-Klasse entwickeln

1761

Die Klasse GrafikFilter im Einsatz

1764

36.3 Fortgeschrittene Techniken

1765

36.3.1 Flackerfrei dank Double Buffering

1765

Eine Puffer-Bitmap erzeugen

1765

Und was ist mit der PictureBox?

1766

36.3.2 Animationen

1767

Vorbereiten des Ausgabeobjekts

1767

Styles bei Controls setzen

1768

Die eigentliche Grafikausgabe

1768

Bemerkungen

1770

36.3.3 Animated GIFs

1770

Wie lernen die Bilder das Laufen?

1771

36.3.4 Auf einzelne GIF-Frames zugreifen

1773

Wiedergabe einzelner Frames

1773

Erzeugen eines Bitmap-Strips

1774

36.3.5 Transparenz realisieren

1774

36.3.6 Eine Grafik maskieren

1776

36.3.7 JPEG-Qualität beim Sichern bestimmen

1777

36.4 Grundlagen der 3D-Vektorgrafik

1778

36.4.1 Datentypen für die Verwaltung

1779

36.4.2 Eine universelle 3D-Grafik-Klasse

1780

36.4.3 Grundlegende Betrachtungen

1781

Drehwinkel

1781

Darstellungsmöglichkeiten

1782

36.4.4 Translation

1784

36.4.5 Streckung/Skalierung

1784

36.4.6 Rotation

1785

36.4.7 Die eigentlichen Zeichenroutinen

1787

Ausgabe einer Linie

1787

Ausgabe eines Koordinatensystems

1788

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 erzeugen

1793

Formular-DC mit GetDC erzeugen

1794

36.5.3 Koordinatensysteme und Abbildungsmodi

1794

36.5.4 Zeichenwerkzeuge/Objekte

1799

Erzeugen und Parametrieren der Objekte

1800

36.5.5 Bitmaps

1801

Bitmaps kopieren

1803

Bitmaps skalieren

1804

36.6 Praxisbeispiele

1805

36.6.1 Die Transformationsmatrix verstehen

1805

Oberfläche

1805

Quelltext

1806

Test

1808

36.6.2 Eine 3D-Grafikausgabe in Aktion

1808

Oberfläche

1808

Quelltext

1808

Test/Bemerkungen

1810

36.6.3 Einen Fenster-Screenshot erzeugen

1811

Oberfläche

1811

Quelltext

1811

Test

1813

Bemerkung

1813

37 Ressourcen/Lokalisierung

1814

37.1 Manifestressourcen

1814

37.1.1 Erstellen von Manifestressourcen

1814

37.1.2 Zugriff auf Manifestressourcen

1816

Namensgebung eingebetteter Ressourcen

1816

Auflisten aller eingebetteten Ressourcen

1816

Die Inhalte eingebetteter Ressourcen auslesen

1817

37.2 Typisierte Resourcen

1817

37.2.1 Erzeugen von .resources-Dateien

1817

37.2.2 Hinzufügen der .resources-Datei zum Projekt

1818

37.2.3 Zugriff auf die Inhalte von .resources-Dateien

1818

Bemerkungen zum Zugriff auf .resources-Dateien

1819

37.2.4 ResourceManager direkt aus der .resources-Datei erzeugen

1819

Bemerkungen

1820

37.2.5 Was sind .resx-Dateien?

1820

37.3 Streng typisierte Ressourcen

1820

37.3.1 Erzeugen streng typisierter Ressourcen

1820

37.3.2 Verwenden streng typisierter Ressourcen

1821

37.3.3 Streng typisierte Ressourcen per Reflection auslesen

1821

37.4 Anwendungen lokalisieren

1824

37.4.1 Localizable und Language

1824

37.4.2 Beispiel "Landesfahnen"

1824

37.4.3 Einstellen der aktuellen Kultur zur Laufzeit

1827

Bemerkungen

1828

37.5 Praxisbeispiel

1829

37.5.1 Betrachter für Manifestressourcen

1829

Oberfläche

1829

Quellcode Form1

1829

Test

1831

38 Komponentenentwicklung

1832

38.1 Überblick

1832

38.2 Benutzersteuerelement

1833

38.2.1 Entwickeln einer Auswahl-ListBox

1833

Oberflächendesign

1834

Implementieren der Programmlogik

1834

38.2.2 Komponente verwenden

1835

38.3 Benutzerdefiniertes Steuerelement

1836

38.3.1 Entwickeln eines BlinkLabels

1836

Oberflächendesign

1837

Festlegen des Typs des Vorfahren

1837

Implementieren der Programmlogik

1838

38.3.2 Verwenden der Komponente

1838

38.4 Komponentenklasse

1839

38.5 Eigenschaften

1840

38.5.1 Einfache Eigenschaften

1840

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 Beschreibungen

1842

38.5.6 Ausblenden im Eigenschaftenfenster

1842

38.5.7 Einfügen in Kategorien

1843

38.5.8 Default-Wert einstellen

1843

38.5.9 Standard-Eigenschaft

1844

38.5.10 Wertebereichsbeschränkung und Fehlerprüfung

1845

38.5.11 Eigenschaften von Aufzählungstypen

1846

38.5.12 Standard Objekt-Eigenschaften

1847

38.5.13 Eigene Objekt-Eigenschaften

1848

38.6 Methoden

1850

38.6.1 Konstruktor

1851

38.6.2 Class-Konstruktor

1852

38.6.3 Destruktor

1853

38.6.4 Aufruf des Basisklassen-Konstruktors

1854

38.6.5 Aufruf von Basisklassen-Methoden

1854

38.7 Ereignisse (Events)

1854

38.7.1 Ereignis mit Standardargument definieren

1855

38.7.2 Ereignis mit eigenen Argumenten

1856

38.7.3 Ein Default-Ereignis festlegen

1857

38.7.4 Mit Ereignissen auf Windows-Messages reagieren

1857

38.8 Weitere Themen

1859

38.8.1 Wohin mit der Komponente?

1859

38.8.2 Assembly-Informationen festlegen

1860

38.8.3 Assemblies signieren

1862

Erstellen eines AssemblyKey-File

1862

38.8.4 Komponenten-Ressourcen einbetten

1863

38.8.5 Der Komponente ein Icon zuordnen

1863

Icon erstellen

1863

38.8.6 Den Designmodus erkennen

1864

38.8.7 Komponenten lizenzieren

1864

Verwendung der LicFileLicenseProvider-Klasse

1865

Ableiten der LicFileLicenseProvider-Klasse

1867

Bemerkung

1868

38.9 Praxisbeispiele

1869

38.9.1 AnimGif für die Anzeige von Animationen

1869

Oberfläche/Ressourcen

1869

Quelltext

1870

Test

1871

38.9.2 Eine FontComboBox entwickeln

1871

Quelltext

1871

Test

1873

38.9.3 Das PropertyGrid verwenden

1874

Oberfläche

1874

Quelltext

1874

Test

1875

39 ASP.NET-Einführung

1878

39.1 ASP.NET für Ein- und Umsteiger

1878

39.1.1 ASP – der Blick zurück

1878

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 ASP

1882

39.1.5 Voraussetzungen für den Einsatz von ASP.NET

1883

39.1.6 Und was hat das alles mit Visual Basic zu tun?

1883

Grundsätzlicher Projektaufbau

1884

39.2 Unsere erste Web-Anwendung

1886

39.2.1 Visueller Entwurf der Bedienoberfläche

1886

39.2.2 Zuweisen der Objekteigenschaften

1888

39.2.3 Verknüpfen der Objekte mit Ereignissen

1889

39.2.4 Programm kompilieren und testen

1891

39.3 Die ASP.NET-Projektdateien

1892

39.3.1 ASP.NET-Website

1893

39.3.2 ASP.NET-Web-Anwendungen

1894

39.3.3 ASPX-Datei(en)

1894

39.3.4 Die aspx.vb-Datei(en)

1897

39.3.5 Die Datei Global.asax

1897

39.3.6 Das Startformular

1898

39.3.7 Die Datei Web.config

1898

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-Verzeichnisse

1902

39.4 Lernen am Beispiel

1903

39.4.1 Erstellen des Projekts

1903

39.4.2 Oberflächengestaltung

1904

Formular-Titel setzen

1905

39.4.3 Ereignisprogrammierung

1905

39.4.4 Ein Fehler, was nun?

1906

Einfache Fehlerbehandlung

1907

39.4.5 Ereignisse von Textboxen

1908

39.4.6 Ein gemeinsamer Ereignis-Handler

1908

39.4.7 Eingabefokus setzen

1909

39.4.8 Ausgaben in einer Tabelle

1909

39.4.9 Scrollen der Anzeige

1912

39.4.10 Zusammenspiel mehrerer Formulare

1912

Globale Variablen?

1913

Das Page_Load-Ereignis

1913

39.4.11 Umleiten bei Direktaufruf

1914

39.4.12 Ärger mit den Cookies

1915

39.4.13 Export auf den IIS

1916

39.5 Tipps & Tricks

1917

39.5.1 Nachinstallieren IIS 7 bzw. 7.5 (Windows 7)

1917

Nachinstallieren

1917

ASP.NET registrieren

1918

39.5.2 Nachinstallieren IIS8 (Windows 8)

1918

40 Übersicht ASP.NET-Controls

1920

40.1 Einfache Steuerelemente im Überblick

1920

40.1.1 Label

1920

AccessKey/AssociatedControlID

1921

Datenbindung

1921

40.1.2 TextBox

1922

40.1.3 Button, ImageButton, LinkButton

1923

Click-Ereignis

1923

OnClientClick-Eigenschaft

1923

PostbackUrl-Eigenschaft

1924

40.1.4 CheckBox, RadioButton

1924

40.1.5 CheckBoxList, BulletList, RadioButtonList

1925

Datenbindung

1925

BulletList

1926

40.1.6 Table

1926

40.1.7 Hyperlink

1928

40.1.8 Image, ImageMap

1928

40.1.9 Calendar

1930

40.1.10 Panel

1931

40.1.11 HiddenField

1931

40.1.12 Substitution

1932

40.1.13 XML

1933

Die XML-Daten

1933

Die Transformationsdateien

1934

Verwendung und Test

1934

40.1.14 FileUpload

1935

40.1.15 AdRotator

1936

40.2 Steuerelemente für die Seitennavigation

1937

40.2.1 Mehr Übersicht mit Web.Sitemap

1937

40.2.2 Menu

1939

Datenbindung an eine SiteMap

1940

Menü ohne Datenbindung

1941

40.2.3 TreeView

1942

TreeView ohne Datenbindung

1943

40.2.4 SiteMapPath

1945

40.2.5 MultiView, View

1946

40.2.6 Wizard

1947

40.3 Webseitenlayout/-design

1949

40.3.1 Masterpages

1949

Masterpage

1950

Content-Seiten

1951

40.3.2 Themes/Skins

1952

Zuweisen des aktiven Theme

1953

Skin-Datei

1953

Stylesheet

1954

Grafiken

1954

40.3.3 Webparts

1955

40.4 Die Validator-Controls

1956

40.4.1 Übersicht

1956

40.4.2 Wo findet die Fehlerprüfung statt?

1957

40.4.3 Verwendung

1957

40.4.4 RequiredFieldValidator

1958

40.4.5 CompareValidator

1959

40.4.6 RangeValidator

1961

40.4.7 RegularExpressionValidator

1961

40.4.8 CustomValidator

1962

Clientseitige Validierung

1963

Serverseitige Validierung

1963

40.4.9 ValidationSummary

1965

40.4.10 Weitere Möglichkeiten

1966

Validierung zeitweise verhindern

1966

ValidationGroup bilden

1966

Eingabefokus setzen

1966

40.5 Praxisbeispiele

1966

40.5.1 Themes und Skins verstehen

1966

Oberfläche

1967

Projekt

1967

Skin bearbeiten

1968

Stylesheet bearbeiten

1968

Quelltext

1969

Test

1970

40.5.2 Masterpages verwenden

1971

Oberfläche (Masterpage)

1971

Oberfläche (Contentpage)

1972

Quelltext

1972

Test

1973

40.5.3 Webparts verwenden

1974

Vorbereiten der Portalseite

1974

User Control programmieren

1974

Inhalte für die Webzones definieren

1975

Programmieren des Werkzeugkastens

1976

41 ASP.NET-Datenbindung

1980

41.1 Einstiegsbeispiel

1980

41.1.1 Erstellen der ASP.NET-Website

1980

Datenbank hinzufügen

1981

GridView hinzufügen

1982

GridView an Datenquelle anbinden

1982

Test

1984

41.2 Einführung

1985

41.2.1 Konzept

1985

41.2.2 Übersicht DataSource-Steuerelemente

1986

41.3 SQLDataSource

1987

41.3.1 Datenauswahl mit Parametern

1989

41.3.2 Parameter für INSERT, UPDATE und DELETE

1990

41.3.3 Methoden

1992

41.3.4 Caching

1993

41.3.5 Aktualisieren/Refresh

1994

41.4 AccessDataSource

1994

41.5 ObjectDataSource

1994

41.5.1 Verbindung zwischen Objekt und DataSource

1994

41.5.2 Ein Beispiel sorgt für Klarheit

1996

41.5.3 Geschäftsobjekte in einer Session verwalten

2000

41.6 SitemapDataSource

2002

41.7 LinqDataSource

2003

41.7.1 Bindung von einfachen Collections

2003

41.7.2 Bindung eines LINQ to SQL-DataContext

2004

41.8 EntityDataSource

2006

41.8.1 Entity Data Model erstellen

2007

41.8.2 EntityDataSource anbinden

2009

41.8.3 Datenmenge filtern

2012

41.9 XmlDataSource

2012

41.10 QueryExtender

2014

41.10.1 Grundlagen

2014

41.10.2 Suchen

2015

41.10.3 Sortieren

2017

41.11 GridView

2018

41.11.1 Auswahlfunktion (Zeilenauswahl)

2018

41.11.2 Auswahl mit mehrspaltigem Index

2019

41.11.3 Hyperlink-Spalte für Detailansicht

2019

41.11.4 Spalten erzeugen

2020

41.11.5 Paging realisieren

2021

41.11.6 Edit, Update, Delete

2023

41.11.7 Keine Daten, was tun?

2024

41.12 DetailsView

2024

41.13 FormView

2026

Datenbindung im Detail

2027

41.14 DataList

2029

41.14.1 Bearbeitungsfunktionen implementieren

2029

41.14.2 Layout verändern

2031

41.15 Repeater

2031

41.16 ListView

2033

41.17 Typisierte Datenbindung

2033

41.18 Model Binding

2034

41.19 Chart

2036

42 ASP.NET-Objekte/-Techniken

2038

42.1 Wichtige ASP.NET-Objekte

2038

42.1.1 HTTPApplication

2038

42.1.2 Application

2041

42.1.3 Session

2042

Session-Variablen

2042

Beenden einer Session

2043

Ereignisse

2043

42.1.4 Page

2044

Eigenschaften

2044

Methoden

2045

Ereignisse

2046

42.1.5 Request

2046

Informationen über den Browser ermitteln

2047

QueryString-Parameter auslesen

2049

42.1.6 Response

2049

Eigenschaften

2050

Methoden

2050

Textausgabe

2050

Bilder/Dateien zum Client senden

2051

Dynamisch erzeugte Grafiken senden

2051

Neue Seiten aufrufen

2053

Wir geben zur Protokoll ...

2053

42.1.7 Server

2054

MapPath

2054

MachineName

2054

Transfer

2054

Execute

2054

42.1.8 Cookies verwenden

2055

User

2057

42.2 ASP.NET-Fehlerbehandlung

2057

42.2.1 Fehler beim Entwurf

2057

42.2.2 Laufzeitfehler

2058

42.2.3 Eine eigene Fehlerseite

2059

42.2.4 Fehlerbehandlung im Web Form

2060

42.2.5 Fehlerbehandlung in der Anwendung

2061

42.2.6 Alternative Fehlerseite einblenden

2062

42.2.7 Lokale Fehlerbehandlung

2063

42.2.8 Seite nicht gefunden! – Was nun?

2064

42.3 E-Mail-Versand in ASP.NET

2064

42.3.1 Übersicht

2064

42.3.2 Mail-Server bestimmen

2065

42.3.3 Einfache Text-E-Mails versenden

2066

Variante 1

2066

Variante 2

2067

42.3.4 E-Mails mit Dateianhang

2067

42.4 Sicherheit von Webanwendungen

2068

42.4.1 Authentication

2068

Anonyme Anmeldung

2068

Forms Authentication

2069

Windows Authentication

2069

42.4.2 Forms Authentication realisieren

2070

Login-Dialog

2070

Die Änderungen in der Web.config

2071

Test

2072

Weitere Möglichkeiten der Authentifizierung

2073

42.4.3 Impersonation

2073

42.4.4 Authorization

2074

File Authorization

2075

URL Authorization

2075

42.4.5 Administrieren der Website

2077

Voraussetzung

2077

ASP.NET-Konfigurationsoberfläche

2077

Auswahl des Authentifizierungstyps

2078

Neuen Nutzer erstellen

2079

Rechte einschränken

2080

42.4.6 Steuerelemente für das Login-Handling

2080

Login

2081

LoginStatus

2082

LoginName

2082

LoginView

2082

PasswortRecovery

2083

CreateUserWizard

2084

ChangePasswort

2085

42.4.7 Programmieren der Sicherheitseinstellungen

2085

42.5 AJAX in ASP.NET-Anwendungen

2087

42.5.1 Was ist eigentlich AJAX und was kann es?

2087

42.5.2 Die AJAX-Controls

2088

ScriptManager

2088

UpdatePanel

2089

UpdateProgress

2090

Timer

2091

42.5.3 AJAX-Control-Toolkit

2091

42.6 User Controls/Webbenutzersteuerelemente

2093

User Controls

2093

Custom Controls

2093

42.6.1 Ein simples Einstiegsbeispiel

2094

Entwurf

2094

Quellcode

2095

Einbindung

2095

Test

2096

Eigene Eigenschaften definieren

2096

Fazit

2097

42.6.2 Dynamische Grafiken im User Control anzeigen

2097

Dynamisches Senden der Grafik

2097

Entwurf des Controls

2098

Verwendung und Test

2100

42.6.3 Grafikausgaben per User Control realisieren

2102

Das User Control

2102

Die Einbindung/Programmierung

2103

Test

2104

43 Silverlight-Entwicklung

2108

43.1 Einführung

2108

43.1.1 Zielplattformen

2109

43.1.2 Silverlight-Applikationstypen

2109

Silverlight-Anwendung

2110

Silverlight-Navigationsanwendung

2110

Silverlight Out-of-Browser-Anwendung

2111

43.1.3 Wichtige Unterschiede zu den WPF-Anwendungen

2111

Einschränkungen durch das Silverlight-Konzept

2111

Unterschiede durch unterschiedliche Codebasis

2112

43.1.4 Vor- und Nachteile von Silverlight-Anwendungen

2113

WPF-ClickOnce-Anwendungen

2113

ASP.NET/AJAX

2113

FLASH

2114

Fazit

2114

43.1.5 Entwicklungstools

2115

43.1.6 Installation auf dem Client

2115

Updates/Deinstallation

2116

43.2 Die Silverlight-Anwendung im Detail

2116

43.2.1 Ein kleines Beispielprojekt

2117

43.2.2 Das Application Package und das Test-Web

2119

.xap-Package

2119

Silverlight.js

2119

...TestPage.aspx & ...TestPage.html

2119

43.3 Die Projektdateien im Überblick

2122

43.3.1 Projektverwaltung mit App.xaml & App.xaml.vb

2123

Startup

2124

Exit

2124

UnhandledException

2125

Weitere Eigenschaften und Methoden der Application-Klasse

2125

43.3.2 MainPage.xaml & MainPage.xaml.vb

2125

43.3.3 AssemblyInfo.vb

2126

43.4 Fenster und Seiten in Silverlight

2126

43.4.1 Das Standardfenster

2126

43.4.2 Untergeordnete Silverlight-Fenster

2127

43.4.3 UserControls für die Anzeige von Detaildaten

2129

Ein-/Ausblenden von UserControls

2129

Hinzufügen/Entfernen von UserControls

2130

43.4.4 Echte Windows

2130

43.4.5 Navigieren in Silverlight-Anwendungen

2131

Projekt erzeugen

2131

Die Page-Klasse

2132

Der Navigations-Frame

2134

43.5 Datenbanken/Datenbindung

2136

43.5.1 ASP.NET-Webdienste/WCF-Dienste

2137

Einfügen der SQL Server-Datenbank

2138

Erstellen des LINQ to SQL-Datenmodells

2138

Erstellen des ASP.NET-Webdienstes

2140

Alternative: Erstellen eines WCF Dienstes

2141

Einbinden der Dienste in das Silverlight-Projekt

2142

Konfigurieren der Silverlight-Oberfläche

2143

Abrufen der Daten

2144

Zusammenfassung

2145

43.5.2 WCF Data Services

2145

Grundlagen

2146

Einfügen der SQL Server-Datenbank

2148

Erstellen des Entity Data Models

2149

Erstellen des WCF Data Service

2149

Einbinden des WCF Data Service in das Silverlight-Projekt

2152

Konfigurieren der Silverlight-Oberfläche

2152

Abrufen der Daten

2152

Bearbeiten der Daten

2153

Arbeiten mit LINQ und Erweiterungsmethoden

2154

43.6 Isolierter Speicher

2156

43.6.1 Grundkonzept

2156

43.6.2 Das virtuelle Dateisystem verwalten

2157

Wieviel Platz ist verfügbar?

2157

Ich will mehr!

2158

Unterverzeichnisse erzeugen

2158

Anzeige von Dateien und Verzeichnissen

2158

Dateien/Verzeichnisse löschen

2159

43.6.3 Arbeiten mit Dateien

2160

Schreiben

2160

Lesen

2160

43.7 Fulltrust-Anwendungen

2161

43.8 Praxisbeispiele

2164

43.8.1 Eine Out-of-Browser-Applikation realisieren

2164

Vorgehensweise

2164

Installation

2166

Bemerkungen

2167

43.8.2 Out-of-Browser-Anwendung aktualisieren

2168

Quellcode

2168

43.8.3 Testen auf aktive Internetverbindung

2169

Quellcode

2169

43.8.4 Auf Out-of-Browser-Anwendung testen

2170

Quellcode

2170

43.8.5 Den Browser bestimmen

2170

Quellcode

2170

Test

2171

43.8.6 Parameter an das Plug-in übergeben

2171

Oberfläche

2171

Quellcode (MainPage.xaml.vb)

2171

Quellcode (App.xaml.vb)

2172

Quellcode der umgebenden HTML-Seite

2172

Test

2173

43.8.7 Auf den QueryString zugreifen

2173

Oberfläche

2173

Quellcode

2173

Test

2174

43.8.8 Timer in Silverlight nutzen

2174

Oberfläche

2174

Quellcode

2174

Test

2175

43.8.9 Dateien lokal speichern

2175

Oberfläche

2175

Quellcode

2175

Bemerkung

2176

43.8.10 Drag & Drop realisieren

2176

Oberfläche

2176

Quelltext

2177

Test

2177

43.8.11 Auf die Zwischenablage zugreifen

2178

Oberfläche

2178

Quelltext

2178

Test

2179

43.8.12 Weitere Fenster öffnen

2180

Oberfläche (MainPage)

2180

Quellcode (MainPage.xaml.vb)

2180

Oberfläche (SilverlightControl1)

2181

Quellcode (SilverlightControl1.xaml.vb)

2181

Test

2182

Bemerkungen

2182

Index

2184

 

© 2009-2024 ciando GmbH