Visual C# 2012 - Grundlagen und Profiwissen

Walter Doberenz, Thomas Gewinnus

Visual C# 2012 - Grundlagen und Profiwissen

2012

2207 Seiten

Format: PDF, Online Lesen

E-Book: €  39,99

E-Book kaufen

E-Book kaufen

ISBN: 9783446435216

 

Visual C# 2012 - Grundlagen und Profiwissen

4

Vorwort

52

Zum Buchinhalt

52

Zu den Neuigkeiten in Visual Studio 2012

53

Weitere Bücher von uns

54

Zu den Codebeispielen

54

Nobody is perfect

55

1 Einstieg in Visual Studio 2012

58

1.1 Die Installation von Visual Studio 2012

58

1.1.1 Überblick über die Produktpalette

58

Visual Studio 2012 Express

58

Visual Studio 2012 Professional

59

Visual Studio 2012 Premium

60

Visual Studio 2012 Ultimate

60

1.1.2 Anforderungen an Hard- und Software

60

1.2 Unser allererstes C#-Programm

61

1.2.1 Vorbereitungen

61

Compilerpfad eintragen

61

1.2.2 Quellcode schreiben

63

1.2.3 Programm kompilieren und testen

64

1.2.4 Einige Erläuterungen zum Quellcode

64

Befehlszeilen und Gültigkeitsbereiche

64

using-Anweisung

65

class-Anweisung

65

WriteLine- und ReadLine-Methoden

65

Assemblierung

65

1.2.5 Konsolenanwendungen sind langweilig

65

1.3 Die Windows-Philosophie

66

1.3.1 Mensch-Rechner-Dialog

66

1.3.2 Objekt- und ereignisorientierte Programmierung

66

Objekte (Objects)

67

Eigenschaften (Properties)

67

Methoden (Methods)

67

Ereignisse (Events)

68

1.3.3 Programmieren mit Visual Studio 2012

68

1.4 Die Entwicklungsumgebung Visual Studio 2012

69

1.4.1 Neues Projekt

69

1.4.2 Die wichtigsten Fenster

70

Der Projektmappen-Explorer

71

Der Designer

72

Der Werkzeugkasten

72

Das Eigenschaften-Fenster

72

Das Codefenster

73

1.5 Microsofts .NET-Technologie

73

1.5.1 Zur Geschichte von .NET

73

Warum eine extra Programmiersprache?

74

Wie funktioniert eine .NET-Sprache?

75

1.5.2 .NET-Features und Begriffe

76

.NET-Framework

76

Die Common Language Specification (CLS)

77

Das Common Type System (CTS)

77

Die Common Language Runtime (CLR)

78

Namespaces ersetzen Registry

79

Assemblierungen

80

Zugriff auf COM-Komponenten

80

Metadaten und Reflexion

80

Attribute

81

Serialisierung

82

Multithreading

82

Objektorientierte Programmierung

83

1.6 Wichtige Neuigkeiten in Visual Studio 2012

83

1.6.1 Die neue Visual Studio 2012 Entwicklungsumgebung

83

Neues Outfit der Toolbar

83

Veränderter Projektmappen-Explorer

84

Registerkartenverwaltung der geöffneten Dateien

85

Suchen überall

85

Neuer Verweis Manager-Dialog

85

Projekt-Kompatibilität

85

Neue Projekttypen

86

Multi-Monitor -Unterstützung

86

Zusätzliche Tools und Features

86

1.6.2 Neuheiten im .NET Framework 4.5

86

WinRT-Anwendungen

86

Portable Klassenbibliotheken

86

Parallele Computervorgänge

87

Internet

87

WPF

87

WCF

87

1.6.3 C# 5.0 – Sprache und Compiler

88

Asynchrone Methoden

88

Caller Information

88

1.7 Praxisbeispiele

88

1.7.1 Windows Forms-Anwendung für Einsteiger

88

1. Etappe: Visueller Entwurf der Bedienoberfläche

89

2. Etappe: Zuweisen der Objekteigenschaften

90

3. Etappe: Verknüpfen der Objekte mit Ereignissen

90

4. Etappe: Programm kompilieren und testen

91

Bemerkungen

92

1.7.2 Windows-Anwendung für fortgeschrittene Einsteiger

93

1. Etappe: Visueller Entwurf der Bedienoberfläche

93

2. Etappe: Zuweisen der Objekteigenschaften

94

3. Etappe: Verknüpfen der Objekte mit Ereignissen

95

4. Etappe: Programm kompilieren und testen

98

IntelliSense – die hilfreiche Fee

99

Hilfe ein Fehler!

99

2 Grundlagen der Sprache C#

102

2.1 Grundbegriffe

102

2.1.1 Anweisungen

102

2.1.2 Bezeichner

103

2.1.3 Schlüsselwörter

104

2.1.4 Kommentare

104

Einzeilige Kommentare

104

Mehrzeilige Kommentare

105

2.2 Datentypen, Variablen und Konstanten

105

2.2.1 Fundamentale Typen

105

2.2.2 Wertetypen versus Verweistypen

106

Wertetypen

107

Verweistypen

107

2.2.3 Benennung von Variablen

107

2.2.4 Deklaration von Variablen

107

Initialisierte Variablen

108

Typinferenz

108

2.2.5 Typsuffixe

109

2.2.6 Zeichen und Zeichenketten

110

char

110

string

110

2.2.7 object-Datentyp

112

2.2.8 Konstanten deklarieren

112

2.2.9 Nullable Types

113

Initialisieren von Wertetypen mit null

113

Zuweisungen mit dem ??-Operator

114

2.2.10 Typinferenz

114

2.2.11 Gültigkeitsbereiche und Sichtbarkeit

115

2.3 Konvertieren von Datentypen

115

2.3.1 Implizite und explizite Konvertierung

115

as-Konverierungsoperator

117

2.3.2 Welcher Datentyp passt zu welchem?

117

2.3.3 Konvertieren von string

118

ToString-Methode

118

String in Zahl verwandeln

119

EVA-Prinzip

119

2.3.4 Die Convert-Klasse

120

2.3.5 Die Parse-Methode

120

2.3.6 Boxing und Unboxing

121

Boxing

121

Unboxing

121

2.4 Operatoren

122

2.4.1 Arithmetische Operatoren

123

Standard-Operatoren

123

Inkrement- und Dekrement-Operatoren

123

2.4.2 Zuweisungsoperatoren

124

2.4.3 Logische Operatoren

125

Vergleichsoperatoren

125

Boolesche Operatoren

126

Kurzschlussauswertung

127

Bitweise Operationen

127

2.4.4 Rangfolge der Operatoren

128

2.5 Kontrollstrukturen

129

2.5.1 Verzweigungsbefehle

129

Klassische Entscheidungsanweisungen

129

Ergänzung

131

Sprungbefehle

132

2.5.2 Schleifenanweisungen

132

for-Schleifen

133

while-Schleife

133

do-Schleife

133

Vorzeitiges Verlassen einer Schleife

134

2.6 Benutzerdefinierte Datentypen

135

2.6.1 Enumerationen

135

Deklaration

135

Zugriff

135

2.6.2 Strukturen

136

Deklaration

136

Datenzugriff

137

Struktur versus Klasse

138

2.7 Nutzerdefinierte Methoden

138

2.7.1 Methoden mit Rückgabewert

139

Deklaration

139

Aufruf

139

2.7.2 Methoden ohne Rückgabewert

140

Deklaration

140

Aufruf

140

2.7.3 Parameterübergabe mit ref

141

Noch einmal – aber bitte langsam

142

2.7.4 Parameterübergabe mit out

142

2.7.5 Methodenüberladung

143

Bemerkungen

143

2.7.6 Optionale Parameter

144

2.7.7 Benannte Parameter

145

2.8 Praxisbeispiele

146

2.8.1 Vom PAP zur Konsolenanwendung

146

Programmablaufplan

146

Programmierung

146

Kompilieren

147

Test

147

2.8.2 Ein Konsolen- in ein Windows-Programm verwandeln

148

Oberfläche

148

Quelltext

149

Test

150

Bemerkungen

150

2.8.3 Schleifenanweisungen verstehen

150

Oberfläche

150

Quellcode

150

Test

152

2.8.4 Benutzerdefinierte Methoden überladen

152

Oberfläche

153

Quellcode

153

Test

155

3 OOP-Konzepte

156

3.1 Kleine Einführung in die OOP

156

3.1.1 Historische Entwicklung

156

Strukturierte Programmierung

157

Objektorientiertes Programmieren

157

3.1.2 Grundbegriffe der OOP

158

Objekt

158

Klasse

159

Instanz

159

Kapselung

159

Wiederverwendbarkeit

159

Vererbung

159

Polymorphie

160

3.1.3 Sichtbarkeit von Klassen und ihren Mitgliedern

160

Klassen

160

Klassenmitglieder

161

3.1.4 Allgemeiner Aufbau einer Klasse

161

3.1.5 Das Erzeugen eines Objekts

162

Referenzieren und Instanziieren

163

Klassische Initialisierung

164

Objekt-Initialisierer

164

Arbeiten mit dem Objekt

165

Zerstören des Objekts

165

3.1.6 Einführungsbeispiel

165

Vorbereitungen

165

Klasse definieren

166

Bemerkungen

167

Objekt erzeugen und initialisieren

168

Objekt verwenden

168

Unterstützung durch die IntelliSense

168

Objekt testen

169

Bemerkungen

170

3.2 Eigenschaften

170

3.2.1 Eigenschaften mit Zugriffsmethoden kapseln

170

Deklarieren von Eigenschaften

171

Zugriff

172

Bemerkung

172

3.2.2 Berechnete Eigenschaften

172

3.2.3 Lese-/Schreibschutz

174

3.2.4 Property-Accessoren

175

3.2.5 Statische Felder/Eigenschaften

175

Konstante Felder

177

3.2.6 Einfache Eigenschaften automatisch implementieren

178

3.3 Methoden

179

3.3.1 Öffentliche und private Methoden

179

3.3.2 Überladene Methoden

180

3.3.3 Statische Methoden

180

Bemerkungen

182

3.4 Ereignisse

182

3.4.1 Ereignis hinzufügen

183

Ereignis deklarieren

184

Ereignis instanziieren

184

Ereignis auslösen

185

3.4.2 Ereignis verwenden

186

Ereignisbehandlung schreiben

187

Ereignisbehandlung anmelden

188

Bemerkungen

188

3.5 Arbeiten mit Konstruktor und Destruktor

189

3.5.1 Konstruktor und Objektinitialisierer

189

Deklaration

190

Aufruf

190

Objektinitialisierer

191

Statischer Konstruktor

191

3.5.2 Destruktor und Garbage Collector

192

3.5.3 Mit using den Lebenszyklus des Objekts kapseln

195

3.5.4 Verzögerte Initialisierung

195

3.6 Vererbung und Polymorphie

196

3.6.1 Klassendiagramm

196

3.6.2 Method-Overriding

198

3.6.3 Klassen implementieren

198

Basisklasse CKunde

198

Subklasse CPrivatKunde

199

Subklasse CFirmenKunde

200

Testoberfläche

201

3.6.4 Implementieren der Objekte

201

Praxistest

202

3.6.5 Ausblenden von Mitgliedern durch Vererbung

203

3.6.6 Allgemeine Hinweise und Regeln zur Vererbung

205

3.6.7 Polymorphes Verhalten

206

Praxistest

208

3.6.8 Die Rolle von System.Object

209

3.7 Spezielle Klassen

210

3.7.1 Abstrakte Klassen

210

Abstrakte Methoden

210

3.7.2 Versiegelte Klassen

211

3.7.3 Partielle Klassen

212

3.7.4 Statische Klassen

213

3.8 Schnittstellen (Interfaces)

214

3.8.1 Definition einer Schnittstelle

214

3.8.2 Implementieren einer Schnittstelle

215

3.8.3 Abfragen, ob Schnittstelle vorhanden ist

216

3.8.4 Mehrere Schnittstellen implementieren

216

3.8.5 Schnittstellenprogrammierung ist ein weites Feld

216

3.9 Praxisbeispiele

217

3.9.1 Eigenschaften sinnvoll kapseln

217

Oberfläche

217

Quellcode (CKreis)

218

Quellcode (Form1)

219

Test

219

Bemerkungen

220

3.9.2 Eine statische Klasse anwenden

220

Oberfläche

220

Quellcode

220

Test

221

3.9.3 Vom fetten zum schlanken Client

222

Oberfläche

222

Quellcode (Fat Client)

223

Test

226

Bemerkungen

226

Abmagerungskur für den fetten Client

227

Quellcode für CRegister

228

Quellcode für CRechenmodul

229

Quellcode für Form1

232

Test

233

Bemerkungen

233

3.9.4 Schnittstellenvererbung verstehen

233

Klassendiagramme

234

Oberfläche Form1

234

Quellcode CPerson

235

Quellcode CKunde

235

Quellcode Form1

236

Test

237

Quellcode IPerson

237

Quellcode CKunde

238

Bemerkungen

238

4 Arrays, Strings, Funktionen

240

4.1 Datenfelder (Arrays)

240

4.1.1 Array deklarieren

240

4.1.2 Array instanziieren

241

4.1.3 Array initialisieren

241

4.1.4 Zugriff auf Array-Elemente

242

Indexüberprüfung

242

Oberen Array-Index ermitteln

243

4.1.5 Zugriff mittels Schleife

243

for-Schleife

243

foreach-Schleife

243

4.1.6 Mehrdimensionale Arrays

244

Dimensionsgrenzen ermitteln

245

Mehrdimensional initialisieren

245

4.1.7 Zuweisen von Arrays

246

4.1.8 Arrays aus Strukturvariablen

247

4.1.9 Löschen und Umdimensionieren von Arrays

248

Felder löschen

248

Array löschen

248

Array-Dimensionen ändern

249

4.1.10 Eigenschaften und Methoden von Arrays

249

Wichtige Eigenschaften und Methoden von Array-Variablen

250

Wichtige Methoden der Array-Klasse

250

4.1.11 Übergabe von Arrays

251

Arrays als Parameter

251

Rückgabe von Arrays

251

4.2 Verarbeiten von Zeichenketten

252

4.2.1 Zuweisen von Strings

252

4.2.2 Eigenschaften und Methoden von String-Variablen

253

Strings in Char-Arrays verwandeln

255

4.2.3 Wichtige Methoden der String-Klasse

255

Strings zerlegen und wieder zusammenstückeln

256

4.2.4 Die StringBuilder-Klasse

257

Grundlegendes

257

Eigenschaften

258

Methoden

259

4.3 Reguläre Ausdrücke

259

4.3.1 Wozu werden reguläre Ausdrücke verwendet?

260

4.3.2 Eine kleine Einführung

260

4.3.3 Wichtige Methoden/Eigenschaften der Klasse Regex

261

Die Match-Methode

261

Eigenschaften des Match-Objekts

262

Die NextMatch-Methode

262

Die Matches-Methode

262

Der Alternator

262

4.3.4 Kompilierte reguläre Ausdrücke

263

4.3.5 RegexOptions-Enumeration

264

4.3.6 Metazeichen (Escape-Zeichen)

264

4.3.7 Zeichenmengen (Character Sets)

265

4.3.8 Quantifizierer

267

4.3.9 Zero-Width Assertions

268

String- und Zeilengrenzen (^ und $)

268

Wortgrenzen (b)

269

Positiver Lookahead (?=expr)

269

Negativer Lookahead (?!expr)

270

Positiver (?<=expr) und negativer (?

271

4.3.10 Gruppen

271

4.3.11 Text ersetzen

272

4.3.12 Text splitten

273

Trennzeichen im Ergebnis

273

4.4 Datums- und Zeitberechnungen

274

4.4.1 Die DateTime-Struktur

274

Grundlegendes

274

4.4.2 Wichtige Eigenschaften von DateTime-Variablen

275

4.4.3 Wichtige Methoden von DateTime-Variablen

276

4.4.4 Wichtige Mitglieder der DateTime-Struktur

276

4.4.5 Konvertieren von Datumstrings in DateTime-Werte

277

4.4.6 Die TimeSpan-Struktur

278

4.5 Mathematische Funktionen

279

4.5.1 Überblick

279

4.5.2 Zahlen runden

280

4.5.3 Winkel umrechnen

280

4.5.4 Potenz- und Wurzeloperationen

280

4.5.5 Logarithmus und Exponentialfunktionen

281

4.5.6 Zufallszahlen erzeugen

281

4.6 Zahlen- und Datumsformatierungen

282

4.6.1 Anwenden der ToString-Methode

282

Zahlenformatierungen

283

Datumsformatierungen

283

4.6.2 Anwenden der Format-Methode

284

4.7 Praxisbeispiele

286

4.7.1 Zeichenketten verarbeiten

286

Oberfläche

286

Quellcode

287

Test

288

Bemerkungen

288

4.7.2 Zeichenketten mit StringBuilder addieren

289

Oberfläche

289

Quellcode Klasse CTest

289

Quellcode Form1

291

Test

292

Bemerkungen

292

4.7.3 Reguläre Ausdrücke testen

292

Oberfläche

292

Quellcode

293

Test

294

Bemerkungen

294

4.7.4 Methodenaufrufe mit Array-Parametern

294

Oberfläche

294

Quellcode

294

Test

297

Bemerkungen

297

5 Weitere Sprachfeatures

298

5.1 Namespaces (Namensräume)

298

5.1.1 Ein kleiner Überblick

298

5.1.2 Einen eigenen Namespace einrichten

299

5.1.3 Die using-Anweisung

300

5.1.4 Namespace Alias

301

5.1.5 Namespace Alias Qualifizierer

301

5.2 Operatorenüberladung

302

5.2.1 Syntaxregeln

302

5.2.2 Praktische Anwendung

303

5.3 Collections (Auflistungen)

304

5.3.1 Die Schnittstelle IEnumerable

304

IEnumerable

305

ICollection

305

IList

306

5.3.2 ArrayList

306

Weitere Eigenschaften und Methoden

307

5.3.3 Hashtable

308

5.3.4 Indexer

308

5.4 Generics

310

5.4.1 Klassische Vorgehensweise

311

Miserable Typsicherheit bei den alten Collections

311

Viel Aufwand für eigene generische Collection-Klassen

312

Warum uns auch ein Array nicht weiterhilft

312

5.4.2 Generics bieten Typsicherheit

312

Einen einfachen generischen Typ deklarieren

312

Generischen Typ verwenden

313

5.4.3 Generische Methoden

313

5.4.4 Iteratoren

314

5.5 Generische Collections

315

5.5.1 List-Collection statt ArrayList

315

5.5.2 Vorteile generischer Collections

316

5.5.3 Constraints

316

5.6 Das Prinzip der Delegates

316

5.6.1 Delegates sind Methodenzeiger

317

5.6.2 Einen Delegate-Typ deklarieren

317

5.6.3 Ein Delegate-Objekt erzeugen

317

5.6.4 Delegates vereinfacht instanziieren

319

5.6.5 Anonyme Methoden

320

5.6.6 Lambda-Ausdrücke

321

5.6.7 Lambda-Ausdrücke in der Task Parallel Library

323

Bemerkungen

324

5.7 Dynamische Programmierung

325

5.7.1 Wozu dynamische Programmierung?

325

5.7.2 Das Prinzip der dynamischen Programmierung

325

5.7.3 Optionale Parameter sind hilfreich

328

5.7.4 Kovarianz und Kontravarianz

329

5.8 Weitere Datentypen

329

5.8.1 BigInteger

329

5.8.2 Complex

332

5.8.3 Tuple<>

332

5.8.4 SortedSet<>

333

5.9 Praxisbeispiele

334

5.9.1 ArrayList versus generische List

334

Oberfläche

335

Quellcode (mit ArrayList)

335

Quellcode (mit generischer List)

336

Test

337

Bemerkungen

338

5.9.2 Generische IEnumerable-Interfaces implementieren

338

Oberfläche

338

Quellcode CTestListe

339

Quellcode Form1

340

Test

340

Bemerkungen

341

5.9.3 Delegates, anonyme Methoden, Lambda Expressions

341

Oberfläche

341

Quellcode

342

Test

344

5.9.4 Dynamischer Zugriff auf COM Interop

345

Oberfläche

345

Quellcode (klassische Programmierung)

345

Quellcode (dynamische Programmierung)

346

Test

346

Bemerkungen

347

6 Einführung in LINQ

348

6.1 LINQ-Grundlagen

348

6.1.1 Die LINQ-Architektur

348

LINQ-Implementierungen

349

6.1.2 Anonyme Typen

349

6.1.3 Erweiterungsmethoden

351

6.2 Abfragen mit LINQ to Objects

352

6.2.1 Grundlegendes zur LINQ-Syntax

352

6.2.2 Zwei alternative Schreibweisen von LINQ Abfragen

353

6.2.3 Übersicht der wichtigsten Abfrage-Operatoren

354

6.3 LINQ-Abfragen im Detail

355

6.3.1 Die Projektionsoperatoren Select und SelectMany

356

Select

356

SelectMany

357

6.3.2 Der Restriktionsoperator Where

357

6.3.3 Die Sortierungsoperatoren OrderBy und ThenBy

358

OrderBy/OrderByDescending

358

ThenBy/ThenByDescending

358

Reverse

359

6.3.4 Der Gruppierungsoperator GroupBy

359

6.3.5 Verknüpfen mit Join

362

6.3.6 Aggregat-Operatoren

362

Count

362

Sum

363

6.3.7 Verzögertes Ausführen von LINQ-Abfragen

364

6.3.8 Konvertierungsmethoden

365

6.3.9 Abfragen mit PLINQ

365

Probleme mit der Sortierfolge

367

6.4 Praxisbeispiele

368

6.4.1 Die Syntax von LINQ-Abfragen verstehen

368

Oberfläche

369

Quellcode

369

Test

370

Bemerkungen

370

6.4.2 Aggregat-Abfragen mit LINQ

371

Oberfläche

371

Quellcode

372

Test

373

Bemerkungen

373

7 Zugriff auf das Dateisystem

376

7.1 Grundlagen

376

7.1.1 Klassen für den Zugriff auf das Dateisystem

377

7.1.2 Statische versus Instanzen-Klasse

377

7.2 Übersichten

378

7.2.1 Methoden der Directory-Klasse

378

7.2.2 Methoden eines DirectoryInfo-Objekts

379

7.2.3 Eigenschaften eines DirectoryInfo-Objekts

379

7.2.4 Methoden der File-Klasse

379

7.2.5 Methoden eines FileInfo-Objekts

380

7.2.6 Eigenschaften eines FileInfo-Objekts

381

7.3 Operationen auf Verzeichnisebene

381

7.3.1 Existenz eines Verzeichnisses/einer Datei feststellen

381

7.3.2 Verzeichnisse erzeugen und löschen

382

7.3.3 Verzeichnisse verschieben und umbenennen

382

7.3.4 Aktuelles Verzeichnis bestimmen

383

7.3.5 Unterverzeichnisse ermitteln

383

7.3.6 Alle Laufwerke ermitteln

383

7.3.7 Dateien kopieren und verschieben

384

7.3.8 Dateien umbenennen

385

7.3.9 Dateiattribute feststellen

385

Attribute von Verzeichnissen und Dateien

386

7.3.10 Verzeichnis einer Datei ermitteln

387

7.3.11 Alle im Verzeichnis enthaltenen Dateien ermitteln

387

7.3.12 Dateien und Unterverzeichnisse ermitteln

387

7.4 Zugriffsberechtigungen

388

7.4.1 ACL und ACE

388

7.4.2 SetAccessControl-Methode

389

7.4.3 Zugriffsrechte anzeigen

389

7.5 Weitere wichtige Klassen

390

7.5.1 Die Path-Klasse

390

7.5.2 Die Klasse FileSystemWatcher

391

7.6 Datei- und Verzeichnisdialoge

392

7.6.1 OpenFileDialog und SaveFileDialog

393

Anzeige und Auswertung

393

Wichtige Eigenschaften

393

Dateifilter

394

7.6.2 FolderBrowserDialog

394

Die SpecialFolder-Enumeration

394

7.7 Praxisbeispiele

395

7.7.1 Infos über Verzeichnisse und Dateien gewinnen

395

Oberfläche

395

Quelltext

396

Test

398

7.7.2 Eine Verzeichnisstruktur in die TreeView einlesen

399

Oberfläche

399

Quellcode

399

Test

400

7.7.3 Mit LINQ und RegEx Verzeichnisbäume durchsuchen

401

Oberfläche

401

Quellcode

402

Test

404

Bemerkungen

405

8 Dateien lesen und schreiben

406

8.1 Grundprinzip der Datenpersistenz

406

8.1.1 Dateien und Streams

406

8.1.2 Die wichtigsten Klassen

407

8.1.3 Erzeugen eines Streams

408

8.2 Dateiparameter

408

8.2.1 FileAccess

408

8.2.2 FileMode

408

8.2.3 FileShare

409

8.3 Textdateien

409

8.3.1 Eine Textdatei beschreiben bzw. neu anlegen

409

WriteAllLines/AppendAllText

410

8.3.2 Eine Textdatei lesen

411

ReadAllLines/ReadLines

411

8.4 Binärdateien

412

8.4.1 Lese-/Schreibzugriff

412

8.4.2 Die Methoden ReadAllBytes und WriteAllBytes

413

8.4.3 Erzeugen von BinaryReader/BinaryWriter

413

8.5 Sequenzielle Dateien

414

8.5.1 Lesen und schreiben von strukturierten Daten

414

8.5.2 Serialisieren von Objekten

415

8.6 Dateien verschlüsseln und komprimieren

416

8.6.1 Das Methodenpärchen Encrypt/Decrypt

416

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

416

8.6.3 Verschlüsseln mit der CryptoStream-Klasse

417

8.6.4 Dateien komprimieren

418

8.7 Memory Mapped Files

419

8.7.1 Grundprinzip

419

8.7.2 Erzeugen eines MMF

420

CreateFromFile-Methode

420

CreateNew-Methode

421

8.7.3 Erstellen eines Map View

421

8.8 Praxisbeispiele

422

8.8.1 Auf eine Textdatei zugreifen

422

Oberfläche

422

Quellcode

422

Test

424

8.8.2 Einen Objektbaum persistent speichern

425

Klassendiagramm

425

Klasse CBestellung

426

Klasse CPerson

427

Klasse CKunde

427

Klasse CFirma

428

Klasse CPersistent

428

Form1

429

Test

431

Anzeige mit DataGridView

431

8.8.3 Ein Memory Mapped File (MMF) verwenden

432

Oberfläche

432

Quellcode

432

Test

433

Bemerkungen

434

9 Asynchrone Programmierung

436

9.1 Übersicht

436

9.1.1 Multitasking versus Multithreading

437

9.1.2 Deadlocks

438

9.1.3 Racing

438

9.2 Programmieren mit Threads

440

9.2.1 Einführungsbeispiel

440

9.2.2 Wichtige Thread-Methoden

441

9.2.3 Wichtige Thread-Eigenschaften

443

9.2.4 Einsatz der ThreadPool-Klasse

444

9.3 Sperrmechanismen

446

9.3.1 Threading ohne lock

446

9.3.2 Threading mit lock

448

Ein anschauliches Beispiel

449

9.3.3 Die Monitor-Klasse

450

Wait und Pulse/PulseAll

451

TryEnter

453

9.3.4 Mutex

453

9.3.5 Methoden für die parallele Ausführung sperren

455

9.3.6 Semaphore

455

9.4 Interaktion mit der Programmoberfläche

457

9.4.1 Die Werkzeuge

457

9.4.2 Einzelne Steuerelemente mit Invoke aktualisieren

457

9.4.3 Mehrere Steuerelemente aktualisieren

459

9.4.4 Ist ein Invoke-Aufruf nötig?

459

9.4.5 Und was ist mit WPF?

460

9.5 Timer-Threads

461

9.6 Die BackgroundWorker-Komponente

462

9.7 Asynchrone Programmier-Entwurfsmuster

465

9.7.1 Kurzübersicht

465

Begin...-Methode

465

End...-Methode

466

Die Rückrufmethode

466

9.7.2 Polling

466

9.7.3 Callback verwenden

468

9.7.4 Callback mit Parameterübergabe verwenden

469

9.7.5 Callback mit Zugriff auf die Programm-Oberfläche

470

9.8 Asynchroner Aufruf beliebiger Methoden

471

9.8.1 Die Beispielklasse

471

9.8.2 Asynchroner Aufruf ohne Callback

473

9.8.3 Asynchroner Aufruf mit Callback und Anzeigefunktion

474

9.8.4 Aufruf mit Rückgabewerten (per Eigenschaft)

475

9.8.5 Aufruf mit Rückgabewerten (per EndInvoke)

475

9.9 Es geht auch einfacher – async und await

476

9.9.1 Der Weg von Synchron zu Asynchron

477

9.9.2 Achtung: Fehlerquellen!

479

9.9.3 Eigene asynchrone Methoden entwickeln

481

9.10 Praxisbeispiele

483

9.10.1 Spieltrieb & Multithreading erleben

483

Aufgabenstellung

483

Oberfläche

484

Quelltext LKW

485

Quelltext Schiff

487

Quelltext Controller

490

Quelltext Global

492

Quelltext Form1

492

Test

495

Bemerkungen

496

9.10.2 Prozess- und Thread-Informationen gewinnen

496

Oberfläche

496

Quellcode

496

Test

500

9.10.3 Ein externes Programm starten

501

Oberfläche

501

Quelltext

501

Test

502

Ergänzungen

502

Bemerkung

503

10 Die Task Parallel Library

504

10.1 Überblick

504

10.1.1 Parallel-Programmierung

504

10.1.2 Möglichkeiten der TPL

507

10.1.3 Der CLR-Threadpool

507

10.2 Parallele Verarbeitung mit Parallel.Invoke

508

10.2.1 Aufrufvarianten

509

10.2.2 Einschränkungen

510

10.3 Verwendung von Parallel.For

510

10.3.1 Abbrechen der Verarbeitung

512

10.3.2 Auswerten des Verarbeitungsstatus

513

10.3.3 Und was ist mit anderen Iterator-Schrittweiten?

514

10.4 Collections mit Parallel.ForEach verarbeiten

514

10.5 Die Task-Klasse

515

10.5.1 Einen Task erzeugen

515

10.5.2 Den Task starten

516

10.5.3 Datenübergabe an den Task

518

10.5.4 Wie warte ich auf das Ende des Task?

519

10.5.5 Tasks mit Rückgabewerten

521

10.5.6 Die Verarbeitung abbrechen

524

Abbruch per return

524

Abbruch per CancellationToken

525

10.5.7 Fehlerbehandlung

527

10.5.8 Weitere Eigenschaften

528

Task-Id

528

Status

529

IsCanceled, IsCompleted, IsFaulted

529

TaskCreationOptions

529

10.6 Zugriff auf das User-Interface

529

10.6.1 Task-Ende und Zugriff auf die Oberfläche

530

10.6.2 Zugriff auf das UI aus dem Task heraus

531

10.7 Weitere Datenstrukturen im Überblick

533

10.7.1 Threadsichere Collections

533

10.7.2 Primitive für die Threadsynchronisation

534

10.8 Parallel LINQ (PLINQ)

534

10.9 Die Parallel Diagnostic Tools

535

10.9.1 Fenster für parallele Aufgaben

535

10.9.2 Fenster für parallele Stacks

536

10.9.3 IntelliTrace

537

10.10 Praxisbeispiel: Spieltrieb – Version 2

537

10.10.1 Aufgabenstellung

537

10.10.2 Global-Klasse

538

10.10.3 Controller-Klasse

539

10.10.4 LKW-Klasse

541

10.10.5 Schiff-Klasse

542

10.10.6 Oberfläche

545

11 Fehlersuche und Behandlung

548

11.1 Der Debugger

548

11.1.1 Allgemeine Beschreibung

548

11.1.2 Die wichtigsten Fenster

549

Befehlsfenster

549

Direktfenster

550

Lokal-Fenster

550

Überwachungsfenster

551

Autofenster

551

Ausgabefenster

551

11.1.3 Debugging-Optionen

552

Einzelschritt-Modus

553

Prozedurschritt-Modus

553

Breakpoints

553

11.1.4 Praktisches Debugging am Beispiel

554

Haltepunkte setzen

555

Abbruchbedingung setzen

555

Trefferanzahl verwenden

556

Einzelschritt-Modus

556

Prozedurschritt

557

Ausführen bis Rücksprung

557

Auswerten von Ausdrücken

557

11.2 Arbeiten mit Debug und Trace

558

11.2.1 Wichtige Methoden von Debug und Trace

558

Write, WriteLine, WriteIf und WriteLineIf

558

IndentLevel, Indent, IndentSize und UnIndent

560

Assert

560

Fail

561

11.2.2 Besonderheiten der Trace-Klasse

562

11.2.3 TraceListener-Objekte

562

TextWriterTraceListener

562

App.config zur Definition verwenden

563

EventLogTraceListener

564

11.3 Caller Information

565

11.3.1 Attribute

565

11.3.2 Anwendung

565

11.4 Fehlerbehandlung

566

11.4.1 Anweisungen zur Fehlerbehandlung

566

11.4.2 try-catch

567

Ausnahmen über Fehlerklassen auswerten

568

Spezifische Fehlerklassen auswerten

568

Fehler erneut auslösen

569

11.4.3 try-finally

572

11.4.4 Das Standardverhalten bei Ausnahmen festlegen

574

11.4.5 Die Exception-Klasse

575

11.4.6 Fehler/Ausnahmen auslösen

576

11.4.7 Eigene Fehlerklassen

576

11.4.8 Exceptionhandling zur Entwurfszeit

578

11.4.9 Code Contracts

579

12 Einführung in WPF

582

Und was ist mit Silverlight?

583

12.1 Neues aus der Gerüchteküche

583

12.1.1 Silverlight

583

12.1.2 WPF

583

12.2 Einführung

584

12.2.1 Was kann eine WPF-Anwendung?

584

12.2.2 Die eXtensible Application Markup Language

586

Unsere erste XAML-Anwendung

587

Probleme mit dem Stammelement

588

Ein kleines Experiment

589

Soll ich das alles von Hand eintippen?

590

12.2.3 Verbinden von XAML und C#-Code

590

App.xaml

590

App.xaml.cs

591

MainWindow.xaml

592

MainWindow.xaml.cs

593

Ein erster Ereignis-Handler

593

Und wo ist mein Button-Objekt?

594

Brauche ich unbedingt eine Trennung von Code und XAML?

595

Kann ich Oberflächen auch per Code erzeugen?

595

12.2.4 Zielplattformen

596

12.2.5 Applikationstypen

597

WPF-Anwendung

597

WPF-Browseranwendungen

597

12.2.6 Vor- und Nachteile von WPF-Anwendungen

598

12.2.7 Weitere Dateien im Überblick

598

Was sind .BAML-Dateien und was passiert damit?

598

Worum handelt es sich bei den .G.CS-Dateien?

599

12.3 Alles beginnt mit dem Layout

601

12.3.1 Allgemeines zum Layout

601

12.3.2 Positionieren von Steuerelementen

603

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

603

Top/Left/Width/Height

604

MinWidth/MaxWidth/MinHeight/MaxHeight

604

Margin/Padding

605

HorizontalAlignment/VerticalAligment

606

12.3.3 Canvas

607

12.3.4 StackPanel

607

12.3.5 DockPanel

609

12.3.6 WrapPanel

611

12.3.7 UniformGrid

611

12.3.8 Grid

613

Definition des Grundlayouts

613

Zuordnen von Kind-Elementen

615

Verwendung des GridSplitters

617

12.3.9 ViewBox

618

12.3.10 TextBlock

619

Textformatierungen

620

Besonderheit von Leerzeichen/Zeilenumbrüchen

621

Textausrichtung

622

12.4 Das WPF-Programm

622

12.4.1 Die App-Klasse

622

12.4.2 Das Startobjekt festlegen

623

12.4.3 Kommandozeilenparameter verarbeiten

624

12.4.4 Die Anwendung beenden

625

12.4.5 Auswerten von Anwendungsereignissen

625

12.5 Die Window-Klasse

626

12.5.1 Position und Größe festlegen

626

12.5.2 Rahmen und Beschriftung

627

12.5.3 Das Fenster-Icon ändern

627

12.5.4 Anzeige weiterer Fenster

628

12.5.5 Transparenz

628

12.5.6 Abstand zum Inhalt festlegen

629

12.5.7 Fenster ohne Fokus anzeigen

629

12.5.8 Ereignisfolge bei Fenstern

630

12.5.9 Ein paar Worte zur Schriftdarstellung

630

TextOptions.TextFormattingMode

631

TextOptions.TextRenderingMode

632

12.5.10 Ein paar Worte zur Darstellung von Controls

633

12.5.11 Wird mein Fenster komplett mit WPF gerendert?

635

13 Übersicht WPF-Controls

636

13.1 Allgemeingültige Eigenschaften

636

13.2 Label

638

13.3 Button, RepeatButton, ToggleButton

639

13.3.1 Schaltflächen für modale Dialoge

639

13.3.2 Schaltflächen mit Grafik

640

13.4 TextBox, PasswordBox

641

13.4.1 TextBox

641

13.4.2 PasswordBox

643

13.5 CheckBox

644

13.6 RadioButton

646

13.7 ListBox, ComboBox

647

13.7.1 ListBox

647

13.7.2 ComboBox

650

13.7.3 Den Content formatieren

652

13.8 Image

653

13.8.1 Grafik per XAML zuweisen

653

13.8.2 Grafik zur Laufzeit zuweisen

654

13.8.3 Bild aus Datei laden

655

13.8.4 Die Grafikskalierung beeinflussen

656

13.9 MediaElement

657

13.10 Slider, ScrollBar

659

13.10.1 Slider

659

13.10.2 ScrollBar

660

13.11 ScrollViewer

661

13.12 Menu, ContextMenu

662

13.12.1 Menu

662

13.12.2 Tastenkürzel

663

13.12.3 Grafiken

664

13.12.4 Weitere Möglichkeiten

665

13.12.5 ContextMenu

666

13.13 ToolBar

667

Der ToolBarTray

668

13.14 StatusBar, ProgressBar

670

13.14.1 StatusBar

670

13.14.2 ProgressBar

672

13.15 Border, GroupBox, BulletDecorator

673

13.15.1 Border

673

13.15.2 GroupBox

674

13.15.3 BulletDecorator

675

13.16 RichTextBox

677

13.16.1 Verwendung und Anzeige von vordefiniertem Text

677

13.16.2 Neues Dokument zur Laufzeit erzeugen

679

13.16.3 Sichern von Dokumenten

679

13.16.4 Laden von Dokumenten

681

13.16.5 Texte per Code einfügen/modifizieren

682

13.16.6 Texte formatieren

683

13.16.7 EditingCommands

684

13.16.8 Grafiken/Objekte einfügen

685

13.16.9 Rechtschreibkontrolle

687

13.17 FlowDocumentPageViewer & Co.

687

13.17.1 FlowDocumentPageViewer

687

13.17.2 FlowDocumentReader

688

13.17.3 FlowDocumentScrollViewer

688

13.18 FlowDocument

688

13.18.1 FlowDocument per XAML beschreiben

689

13.18.2 FlowDocument per Code erstellen

691

13.19 DocumentViewer

692

13.20 Expander, TabControl

693

13.20.1 Expander

693

13.20.2 TabControl

695

13.21 Popup

696

13.22 TreeView

698

13.23 ListView

701

13.24 DataGrid

702

13.25 Calendar/DatePicker

703

DisplayMode

703

DisplayDate, SelectedDate und SelectedDates

703

Auswahlmodi

704

Sperrtage

705

Calendar skalieren

706

13.26 InkCanvas

707

13.26.1 Stift-Parameter definieren

707

13.26.2 Die Zeichenmodi

708

13.26.3 Inhalte laden und sichern

709

13.26.4 Konvertieren in eine Bitmap

709

13.26.5 Weitere Eigenschaften

710

13.27 Ellipse, Rectangle, Line und Co.

711

13.27.1 Ellipse

711

13.27.2 Rectangle

711

13.27.3 Line

712

13.28 Browser

712

13.29 Ribbon

715

13.29.1 Allgemeine Grundlagen

715

13.29.2 Download/Installation

716

13.29.3 Erste Schritte

717

13.29.4 Registerkarten und Gruppen

718

13.29.5 Kontextabhängige Registerkarten

719

13.29.6 Einfache Beschriftungen

720

13.29.7 Schaltflächen

720

Schaltflächen zusammenfassen

722

13.29.8 Auswahllisten

722

13.29.9 Optionsauswahl

725

13.29.10 Texteingaben

725

13.29.11 Screentips

725

13.29.12 Symbolleiste für den Schnellzugriff

726

13.29.13 Das RibbonWindow

727

13.29.14 Menüs

728

13.29.15 Anwendungsmenü

730

13.29.16 Alternativen

733

13.30 Chart

733

13.31 WindowsFormsHost

734

14 Wichtige WPF-Techniken

738

14.1 Eigenschaften

738

14.1.1 Abhängige Eigenschaften (Dependency Properties)

738

14.1.2 Angehängte Eigenschaften (Attached Properties)

740

14.2 Einsatz von Ressourcen

740

14.2.1 Was sind eigentlich Ressourcen?

740

14.2.2 Wo können Ressourcen gespeichert werden?

740

14.2.3 Wie definiere ich eine Ressource?

742

14.2.4 Statische und dynamische Ressourcen

743

14.2.5 Wie werden Ressourcen adressiert?

744

14.2.6 System-Ressourcen einbinden

745

14.3 Das WPF-Ereignis-Modell

745

14.3.1 Einführung

745

14.3.2 Routed Events

746

14.3.3 Direkte Events

748

14.4 Verwendung von Commands

749

14.4.1 Einführung zu Commands

749

14.4.2 Verwendung vordefinierter Commands

749

14.4.3 Das Ziel des Commands

751

14.4.4 Welche vordefinierten Commands stehen zur Verfügung?

752

14.4.5 Commands an Ereignismethoden binden

753

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

754

14.4.7 Command-Ausführung verhindern

755

14.5 Das WPF-Style-System

755

14.5.1 Übersicht

755

14.5.2 Benannte Styles

756

14.5.3 Typ-Styles

757

14.5.4 Styles anpassen und vererben

758

Styles anpassen (überschreiben)

759

Style ersetzen

759

Styles vererben

760

Styleänderung per Code

760

14.6 Verwenden von Triggern

761

14.6.1 Eigenschaften-Trigger (Property Triggers)

761

14.6.2 Ereignis-Trigger

763

14.6.3 Daten-Trigger

764

14.7 Einsatz von Templates

765

14.7.1 Neues Template erstellen

765

14.7.2 Template abrufen und verändern

769

14.8 Transformationen, Animationen, StoryBoards

772

14.8.1 Transformationen

772

Drehen mit RotateTransform

773

Skalieren mit ScaleTransform

774

Verformen mit SkewTransform

774

Verschieben mit TranslateTransform

775

Und alles zusammen mit TransformGroup

775

Hilfe durch den WPF-Editor

777

14.8.2 Animationen mit dem StoryBoard realisieren

778

Animation per C#-Code realisieren

779

Animation per Code steuern

779

Mehrere Animationen zusammenfassen

782

14.9 Praxisbeispiel

782

14.9.1 Arbeiten mit Microsoft Expression Blend

782

Eine Animation realisieren

783

Der XAML-Code

784

Test

785

Bemerkung

785

15 WPF-Datenbindung

788

15.1 Grundprinzip

788

15.1.1 Bindungsarten

789

15.1.2 Wann eigentlich wird die Quelle aktualisiert?

790

15.1.3 Geht es auch etwas langsamer?

791

15.1.4 Bindung zur Laufzeit realisieren

792

15.2 Binden an Objekte

794

15.2.1 Objekte im XAML-Code instanziieren

794

15.2.2 Verwenden der Instanz im C#-Quellcode

796

15.2.3 Anforderungen an die Quell-Klasse

796

15.2.4 Instanziieren von Objekten per C#-Code

798

15.3 Binden von Collections

799

15.3.1 Anforderung an die Collection

799

15.3.2 Einfache Anzeige

800

15.3.3 Navigieren zwischen den Objekten

801

15.3.4 Einfache Anzeige in einer ListBox

803

Verwendung von DisplayMemberPath

803

15.3.5 DataTemplates zur Anzeigeformatierung

804

15.3.6 Mehr zu List- und ComboBox

805

SelectedIndex

805

SelectedItem/SelectedItems

805

SelectedValuePath und SelectedValue

806

15.3.7 Verwendung der ListView

807

Einfache Bindung

807

Sortieren der Einträge

808

15.4 Noch einmal zurück zu den Details

809

15.4.1 Navigieren in den Daten

809

15.4.2 Sortieren

811

15.4.3 Filtern

811

15.4.4 Live Shaping

812

15.5 Anzeige von Datenbankinhalten

813

15.5.1 Datenmodell per LINQ to SQL-Designer erzeugen

814

15.5.2 Die Programm-Oberfläche

815

15.5.3 Der Zugriff auf die Daten

816

15.6 Drag & Drop-Datenbindung

817

15.6.1 Vorgehensweise

817

15.6.2 Weitere Möglichkeiten

820

15.7 Formatieren von Werten

821

15.7.1 IValueConverter

822

15.7.2 BindingBase.StringFormat-Eigenschaft

824

15.8 Das DataGrid als Universalwerkzeug

826

15.8.1 Grundlagen der Anzeige

826

15.8.2 UI-Virtualisierung

827

15.8.3 Spalten selbst definieren

827

15.8.4 Zusatzinformationen in den Zeilen anzeigen

829

15.8.5 Vom Betrachten zum Editieren

830

15.9 Praxisbeispiele

831

15.9.1 Collections in Hintergrundthreads füllen

831

Oberfläche

831

Das Problem

831

Lösung (bis .NET 4.0)

833

Test

833

Lösung (ab .NET 4.5)

833

Test

834

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

834

Oberfläche

834

Quellcode (XAML)

836

Quellcode (C#)

837

Test

838

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

852

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

884

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

Bemerkung

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

919

18.4.3 Reagieren auf die Änderung

919

SizeChanged auswerten

920

VisualStateManager

921

18.4.4 Angedockten Modus aktiv beenden

923

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

927

Test

927

Bemerkung

927

18.6.2 Auf Ansichtsänderungen reagieren

927

Oberfläche & Quellcode MainPage

927

Oberfläche & Quellcode BlankPage1

928

Oberfläche der beiden Frame-Seiten

929

Oberfläche & Quellcode BasicPage2

930

18.7 Tipps & Tricks

931

18.7.1 Symbole für WinRT-Oberflächen finden

931

18.7.2 Wie werde ich das Grufti-Layout schnell los?

932

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

946

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

957

19.3.4 FlipView

960

19.4 Sonstige Controls

962

19.4.1 CaptureElement

962

19.4.2 MediaElement

963

19.4.3 Frame

965

19.4.4 WebView

965

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

973

Quelltext

975

Test

975

Bemerkung

976

19.5.4 Das SemanticZoom-Control verwenden

978

Oberflächen

979

Quellcode

981

Test

981

19.5.5 Die CollectionViewSource verwenden

982

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

989

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.cs

996

20.1.3 Verweise

997

20.1.4 App.xaml und App.xaml.cs

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.cs

1003

20.1.8 Datentyp-Konverter/Hilfsklassen

1004

BooleanToVisibilityConverter.cs

1004

BooleanNegationConverter.cs

1004

RichTextColumns.cs

1005

SuspensionManager.cs

1005

LayoutAwarePage.cs

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

1017

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

1019

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

1024

20.3.8 Daten in der Cloud ablegen/laden (Roaming)

1026

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.cs)

1033

Quelltext (SearchPage.xaml.cs)

1036

Quelltext (DetailPage.xaml.cs)

1036

Test

1037

Erweiterungen

1038

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.cs)

1043

Quellcode (ErsatzSplashScreen.xaml.cs)

1043

Test

1044

20.4.4 Eine Dateiverknüpfung erstellen

1044

Oberfläche

1044

Quelltext (App.xaml.cs)

1045

Quelltext (BasicPage1.xaml.cs)

1046

Test

1046

Ergänzungen

1048

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

1054

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

1063

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

1074

Texte kopieren und einfügen

1075

Bilder kopieren und einfügen

1076

Dateien kopieren/verschieben und abrufen

1077

Zwischenablage überwachen

1079

21.2.2 Teilen von Inhalten

1081

Funktion "Teilen" programmgesteuert aufrufen

1083

Sie möchten temporär keine Daten teilen

1084

21.2.3 Eine App als Freigabeziel verwenden

1084

21.2.4 Zugriff auf die Kontaktliste

1085

21.3 Spezielle Oberflächenelemente

1087

21.3.1 MessageDialog

1087

Dialog mit Auswahl

1087

Alternativen beim Auswerten der Tasten

1089

Ergänzungen

1090

21.3.2 Popup-Benachrichtigungen

1090

Wann sollten Sie Popup-Benachrichtigungen einsetzen?

1091

Was können Sie alles parametrieren?

1093

Und wie funktioniert das alles?

1093

Unser ToastNotification-"Bäckerei"

1094

Prüfen auf Funktionsfähigkeit

1098

21.3.3 PopUp/Flyouts

1098

21.3.4 Das PopupMenu einsetzen

1102

21.3.5 Eine AppBar verwenden

1104

21.4 Datenbanken und Windows 8-Apps

1109

21.4.1 Der Retter in der Not: SQLite!

1109

21.4.2 Verwendung/Kurzüberblick

1109

Was eigentlich ist SQLite?

1109

Vorteile

1110

Nachteile

1110

21.4.3 Installation

1111

21.4.4 Wie kommen wir zu einer neuen Datenbank?

1113

21.4.5 Wie werden die Daten manipuliert?

1117

21.5 Vertrieb der App

1119

21.5.1 Verpacken der App

1119

21.5.2 Windows App Certification Kit

1121

21.5.3 App-Installation per Skript

1123

21.6 Ein Blick auf die App-Schwachstellen

1124

21.6.1 Quellcodes im Installationsverzeichnis

1124

21.6.2 Zugriff auf den App-Datenordner

1126

21.7 Praxisbeispiele

1126

21.7.1 Ein Verzeichnis auf Änderungen überwachen

1126

Oberfläche

1127

Quellcode

1127

Test

1128

21.7.2 Eine App als Freigabeziel verwenden

1129

Oberfläche

1129

Registrieren der App als Freigabeziel

1130

Quellcode (App.xaml.cs)

1131

Quellcode (InsertPage.xaml.cs)

1131

Test

1133

21.7.3 ToastNotifications einfach erzeugen

1134

Quellcode

1135

Test

1139

Index

1150

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

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 Verwendung des DOM unter .NET

1216

22.3.1 Übersicht

1216

22.3.2 DOM-Integration in C#

1217

22.3.3 Laden von Dokumenten

1217

22.3.4 Erzeugen von XML-Dokumenten

1218

22.3.5 Auslesen von XML-Dateien

1220

22.3.6 Direktzugriff auf einzelne Elemente

1222

22.3.7 Einfügen von Informationen

1222

22.3.8 Suchen in den Baumzweigen

1225

22.4 XML-Verarbeitung mit LINQ to XML

1228

22.4.1 Die LINQ to XML-API

1228

22.4.2 Neue XML-Dokumente erzeugen

1230

22.4.3 Laden und Sichern von XML-Dokumenten

1232

22.4.4 Navigieren in XML-Daten

1233

22.4.5 Auswählen und Filtern

1235

22.4.6 Manipulieren der XML-Daten

1235

Editieren der Daten

1236

Hinzufügen von Daten

1236

Löschen

1237

22.4.7 XML-Dokumente transformieren

1237

22.5 Weitere Möglichkeiten der XML-Verarbeitung

1240

22.5.1 Die relationale Sicht mit XmlDataDocument

1240

Laden von XML-Daten

1240

Verwendung des DataSets

1241

22.5.2 XML-Daten aus Objektstrukturen erzeugen

1243

22.5.3 Schnelles Suchen in XML-Daten mit XPathNavigator

1246

22.5.4 Schnelles Auslesen von XML-Daten mit XmlReader

1249

22.5.5 Erzeugen von XML-Daten mit XmlWriter

1251

22.5.6 XML transformieren mit XSLT

1253

22.6 Praxisbeispiele

1255

22.6.1 Mit dem DOM in XML-Dokumenten navigieren

1255

Oberfläche

1255

Quelltext

1256

Test

1257

Bemerkungen

1258

22.6.2 XML-Daten in eine TreeView einlesen

1258

Oberfläche

1258

Quelltext

1258

Test

1260

Ergänzung

1260

23 Einführung in ADO.NET

1262

23.1 Eine kleine Übersicht

1262

23.1.1 Die ADO.NET-Klassenhierarchie

1262

23.1.2 Die Klassen der Datenprovider

1263

.NET-Datenprovider

1264

Weitere Datenprovider

1264

Anzeige der installierten Datenprovider

1265

23.1.3 Das Zusammenspiel der ADO.NET-Klassen

1266

23.2 Das Connection-Objekt

1267

23.2.1 Allgemeiner Aufbau

1267

23.2.2 OleDbConnection

1267

Parameter für OleDb-Zugriff

1267

OleDb-Provider für Access Datenbank

1268

23.2.3 Schließen einer Verbindung

1269

23.2.4 Eigenschaften des Connection-Objekts

1269

ConnectionString-Eigenschaft

1269

Database- und DataSource-Eigenschaft

1270

Provider-Eigenschaft

1270

ServerVersion-Eigenschaft

1270

ConnectionTimeout-Eigenschaft

1271

State-Eigenschaft

1271

23.2.5 Methoden des Connection-Objekts

1271

Open- und Close-Methode

1271

ChangeDatabase-Methode

1272

CreateCommand-Methode

1272

23.2.6 Der ConnectionStringBuilder

1272

23.3 Das Command-Objekt

1272

23.3.1 Erzeugen und Anwenden eines Command-Objekts

1273

23.3.2 Erzeugen mittels CreateCommand-Methode

1273

23.3.3 Eigenschaften des Command-Objekts

1274

Connection- und CommandText-Eigenschaft

1274

CommandTimeout-Eigenschaft

1274

CommandType-Eigenschaft

1275

23.3.4 Methoden des Command-Objekts

1276

ExecuteNonQuery-Methode

1276

ExecuteReader-Methode

1276

ExecuteScalar-Methode

1276

23.3.5 Freigabe von Connection- und Command-Objekten

1277

23.4 Parameter-Objekte

1278

23.4.1 Erzeugen und Anwenden eines Parameter-Objekts

1278

23.4.2 Eigenschaften des Parameter-Objekts

1279

ParameterName- und Value-Eigenschaft

1279

DbType, OleDbType und SqlDbType-Eigenschaft

1279

Direction-Eigenschaft

1279

23.5 Das CommandBuilder-Objekt

1280

23.5.1 Erzeugen

1280

23.5.2 Anwenden

1280

23.6 Das DataReader-Objekt

1281

23.6.1 DataReader erzeugen

1281

23.6.2 Daten lesen

1282

23.6.3 Eigenschaften des DataReaders

1283

Item-Eigenschaft

1283

FieldCount-Eigenschaft

1283

IsClosed-Eigenschaft

1283

23.6.4 Methoden des DataReaders

1283

Read-Methode

1283

GetValue- und GetValues-Methode

1283

GetOrdinal- und ähnliche Methoden

1283

Bemerkungen

1283

23.7 Das DataAdapter-Objekt

1284

23.7.1 DataAdapter erzeugen

1284

Konstruktor mit SELECT-String und Connection-Objekt

1284

Konstruktor mit SelectCommand-Objekt

1285

23.7.2 Command-Eigenschaften

1285

23.7.3 Fill-Methode

1286

Begrenzen der Datenmenge

1286

23.7.4 Update-Methode

1287

23.8 Praxisbeispiele

1288

23.8.1 Wichtige ADO.NET-Objekte im Einsatz

1288

Oberfläche

1288

Quellcode

1288

Test

1289

Bemerkungen

1289

23.8.2 Eine Aktionsabfrage ausführen

1289

Oberfläche

1290

Quellcode

1290

Test

1291

Bemerkungen

1291

23.8.3 Eine Auswahlabfrage aufrufen

1292

Oberfläche

1292

Quellcode

1292

Test

1294

23.8.4 Die Datenbank aktualisieren

1294

Oberfläche

1295

Quellcode (Command-Objekte selbst programmiert)

1295

Test

1296

Bemerkungen

1297

24 Das DataSet

1298

24.1 Grundlegende Features des DataSets

1298

24.1.1 Die Objekthierarchie

1299

24.1.2 Die wichtigsten Klassen

1299

24.1.3 Erzeugen eines DataSets

1300

Copy-Methode

1300

Clone-Methode

1301

GetChanges-/HasChanges-Methode

1301

24.2 Das DataTable-Objekt

1301

24.2.1 DataTable erzeugen

1302

24.2.2 Spalten hinzufügen

1302

24.2.3 Zeilen zur DataTable hinzufügen

1303

NewRow-Methode

1303

ImportRow-Methode

1303

24.2.4 Auf den Inhalt einer DataTable zugreifen

1304

Columns- und Rows-Eigenschaften

1304

TableName- und ColumnName-Eigenschaften

1304

Find-Methode

1305

Zeilen löschen

1305

24.3 Die DataView

1306

24.3.1 Erzeugen einer DataView

1306

24.3.2 Sortieren und Filtern von Datensätzen

1306

24.3.3 Suchen von Datensätzen

1307

24.4 Typisierte DataSets

1307

24.4.1 Ein typisiertes DataSet erzeugen

1308

24.4.2 Das Konzept der Datenquellen

1309

24.4.3 Typisierte DataSets und TableAdapter

1310

Warum sollte man ein typisiertes DataSet einsetzen?

1310

Der TableAdapter

1311

24.5 Die Qual der Wahl

1311

24.5.1 DataReader – der schnelle Lesezugriff

1312

24.5.2 DataSet – die Datenbank im Hauptspeicher

1312

Typisiertes versus untypisiertes DataSet

1312

24.5.3 Objektrelationales Mapping – die Zukunft?

1313

LINQ to SQL/LINQ to Entities

1313

24.6 Praxisbeispiele

1314

24.6.1 In der DataView sortieren und filtern

1314

Oberfläche

1314

Quellcode

1314

Test

1315

Bemerkungen

1316

24.6.2 Suche nach Datensätzen

1316

Oberfläche

1316

Quellcode

1316

Test

1317

24.6.3 Ein DataSet in einen XML-String serialisieren

1317

Konvertierungsmethoden

1318

Testoberfläche Form1

1319

Quellcode Form1

1319

Erzeugen eines untypisierten DataSets als Testobjekt

1320

Test

1321

24.6.4 Untypisiertes in ein typisiertes DataSet konvertieren

1322

Konvertierungscode

1323

Normales DataSet erzeugen

1323

Typisiertes DataSet erzeugen

1324

Oberfläche

1325

Test

1326

Bemerkungen

1327

24.6.5 Eine LINQ to SQL-Abfrage ausführen

1327

Datenmodell per LINQ to SQL-Designer erzeugen

1327

Datenquelle hinzufügen

1328

Oberfläche

1329

Test

1330

Bemerkung

1330

25 OOP-Spezial

1332

25.1 Eine kleine Einführung in die UML

1332

25.1.1 Use Case-Diagramm

1332

25.1.2 Use Case-Dokumentation

1334

USE CASE: Inbetriebnahme des Autos

1334

USE CASE: Versuchter Diebstahl des Autos

1335

25.1.3 Objekte identifizieren

1335

25.1.4 Statisches Modell

1336

25.1.5 Beziehungen zwischen den Klassen

1337

25.1.6 Dynamisches Modell

1337

Relevante Zustände identifizieren

1337

Zustandsüberführungs­diagramm

1338

25.1.7 Implementierung

1338

Klasse CSchlüssel

1339

Klasse CSchloss

1340

Klasse CAuto

1340

25.1.8 Test-Client

1342

Test

1344

Bemerkungen

1345

25.2 Der Klassen-Designer

1345

25.2.1 Ein neues Klassendiagramm erzeugen

1346

25.2.2 Werkzeugkasten

1347

25.2.3 Enumeration

1348

25.2.4 Klasse

1350

Klassendetails-Fenster

1351

25.2.5 Struktur

1352

25.2.6 Abstrakte Klasse

1352

25.2.7 Schnittstelle

1354

25.2.8 Delegate

1356

25.2.9 Zuordnung

1358

25.2.10 Vererbung

1359

25.2.11 Diagramme anpassen

1359

25.2.12 Wann lohnt sich der Klassen-Designer?

1360

25.3 Praxisbeispiele

1360

25.3.1 Implementierung einer Finite State Machine

1360

Zustandsüberführungsmatrix

1360

CAuto

1364

Clientcode

1365

Test

1366

25.3.2 Modellierung des Bestellsystems einer Firma

1366

Klassendiagramm

1366

Klasse CBestellung

1367

Klasse CPerson

1369

Klasse CKunde

1370

Klasse CFirma

1373

Klasse Form1

1374

Abschlusstest

1378

Bemerkungen

1378

26 Das Microsoft Event Pattern

1380

26.1 Einführung in Design Pattern

1380

26.2 Aufbau und Bedeutung des Observer Pattern

1381

26.2.1 Subjekt und Observer

1381

26.2.2 Sequenzdiagramme

1383

26.2.3 Die Registration-Sequenz

1383

26.2.4 Die Notification-Sequenz

1384

26.2.5 Die Unregistration-Sequenz

1384

26.2.6 Bedeutung der Sequenzen für das Geschäftsmodell

1385

26.2.7 Die Rolle des Containers

1385

26.3 Implementieren mit Interfaces und Callbacks

1386

26.3.1 Übersicht und Klassendiagramm

1386

26.3.2 Die Schnittstellen IObserver und IObservable

1388

26.3.3 Die Abstrakte Klasse Subject

1388

26.3.4 Observer1

1389

26.3.5 Observer2

1390

26.3.6 Model

1391

26.3.7 Form1

1392

26.3.8 Ein zweites Klassendiagramm

1393

26.3.9 Testen

1394

26.4 Implementierung mit Delegates und Events

1395

26.4.1 Multicast-Events

1396

26.4.2 IObserver, IObservable und Subject

1396

26.4.3 Observer1 und Observer2

1397

26.4.4 Model

1397

26.4.5 Form1

1398

26.4.6 Test und Vergleich

1398

26.4.7 Klassendiagramm

1399

26.5 Implementierung des Microsoft Event Pattern

1400

26.5.1 Namensgebung für Ereignisse

1400

26.5.2 Namensgebung und Signatur der Delegates

1400

26.5.3 Hinzufügen einer das Ereignis auslösenden Methode

1401

Neue Klasse NumberChangedEventArgs

1401

26.5.4 Model

1402

26.5.5 Observer1

1403

26.5.6 Form1

1404

26.6 Test und Vergleich

1404

26.7 Klassendiagramm

1404

26.8 Implementierung eines Event Pattern

1405

26.9 Praxisbeispiel

1407

26.9.1 Objekte beobachten sich gegenseitig

1407

Oberfläche

1407

NumberChangedEventArgs und MaximumChangedEventArgs

1407

Model

1408

Observer1

1410

Observer2

1411

Form1

1412

Test und Vergleich

1414

Klassenzusammenstellung

1415

Klassendiagramm

1416

27 Verteilen von Anwendungen

1418

27.1 ClickOnce-Deployment

1419

27.1.1 Übersicht/Einschränkungen

1419

27.1.2 Die Vorgehensweise

1420

27.1.3 Ort der Veröffentlichung

1420

27.1.4 Anwendungsdateien

1421

27.1.5 Erforderliche Komponenten

1421

27.1.6 Aktualisierungen

1422

27.1.7 Veröffentlichungsoptionen

1423

27.1.8 Veröffentlichen

1424

27.1.9 Verzeichnisstruktur

1424

27.1.10 Der Webpublishing-Assistent

1426

27.1.11 Neue Versionen erstellen

1427

27.2 InstallShield

1427

27.2.1 Installation

1427

27.2.2 Aktivieren

1428

27.2.3 Ein neues Setup-Projekt

1428

Anwendungseinstellungen

1429

Installationsbedingungen

1430

Optionales Setup

1431

Anwendungsdateien

1431

Startmenü und Verknüpfungen

1432

Registrierungseinträge

1432

Setup-Dialoge/Erscheinungsbild

1433

Installationsdateien

1435

27.2.4 Finaler Test

1436

28 Weitere Techniken

1438

28.1 Zugriff auf die Zwischenablage

1438

28.1.1 Das Clipboard-Objekt

1438

Kopieren

1439

Einfügen

1439

28.1.2 Zwischenablage-Funktionen für Textboxen

1440

28.2 Arbeiten mit der Registry

1440

28.2.1 Allgemeines

1441

28.2.2 Registry-Unterstützung in .NET

1443

28.3 .NET-Reflection

1444

28.3.1 Übersicht

1444

28.3.2 Assembly laden

1444

28.3.3 Mittels GetType und Type Informationen sammeln

1445

28.3.4 Dynamisches Laden von Assemblies

1447

Beispiel

1447

28.4 Das SerialPort-Control

1450

28.4.1 Übersicht

1450

Wichtige Eigenschaften

1450

Wichtige Methoden

1451

Wichtige Ereignisse

1451

28.4.2 Einführungsbeispiele

1451

SerialPortTalker

1451

SerialPortListener

1452

Test

1453

28.4.3 Thread-Probleme bei Windows Forms-Anwendungen

1454

28.4.4 Ein einfaches Terminalprogramm

1457

Bedienoberfläche

1458

Quellcode

1458

Test

1461

Bemerkungen zur Verarbeitung von Messdaten

1461

28.5 Praxisbeispiele

1462

28.5.1 Zugriff auf die Registry

1462

Oberfläche

1462

Quelltext

1462

Test

1464

28.5.2 Dateiverknüpfungen erzeugen

1464

28.5.3 Betrachter für Manifestressourcen

1466

Oberfläche

1466

Quellcode Form1

1466

Test

1468

28.5.4 Ressourcen mit Reflection auslesen

1469

29 Konsolenanwendungen

1472

29.1 Grundaufbau/Konzepte

1472

29.1.1 Unser Hauptprogramm – Program.cs

1473

static void Main()

1474

29.1.2 Rückgabe eines Fehlerstatus

1474

29.1.3 Parameterübergabe

1475

29.1.4 Zugriff auf die Umgebungsvariablen

1476

29.2 Die Kommandozentrale: System.Console

1477

29.2.1 Eigenschaften

1478

29.2.2 Methoden/Ereignisse

1478

29.2.3 Textausgaben

1479

29.2.4 Farbangaben

1480

29.2.5 Tastaturabfragen

1481

Modifiers-Eigenschaft und ConsoleModifiers-Enumeration

1482

29.2.6 Arbeiten mit Streamdaten

1482

29.3 Praxisbeispiel

1484

29.3.1 Farbige Konsolenanwendung

1484

29.3.2 Weitere Hinweise und Beispiele

1486

30 Windows Forms-Anwendungen

1490

30.1 Grundaufbau/Konzepte

1490

30.1.1 Das Hauptprogramm – Program.cs

1491

static void Main()

1492

Application.EnableVisualStyles

1493

Application.SetCompatibleTextRenderingDefault(false)

1493

Application.Run(new Form1())

1493

30.1.2 Die Oberflächendefinition – Form1.Designer.cs

1495

30.1.3 Die Spielwiese des Programmierers – Form1.cs

1496

30.1.4 Die Datei AssemblyInfo.cs

1497

30.1.5 Resources.resx/Resources.Designer.cs

1498

30.1.6 Settings.settings/Settings.Designer.cs

1499

30.1.7 Settings.cs

1500

30.2 Ein Blick auf die Application-Klasse

1501

30.2.1 Eigenschaften

1501

30.2.2 Methoden

1502

30.2.3 Ereignisse

1504

30.3 Allgemeine Eigenschaften von Komponenten

1504

30.3.1 Font

1505

30.3.2 Handle

1507

30.3.3 Tag

1508

30.3.4 Modifiers

1508

30.4 Allgemeine Ereignisse von Komponenten

1509

30.4.1 Die Eventhandler-Argumente

1509

30.4.2 Sender

1509

30.4.3 Der Parameter e

1511

30.4.4 Mausereignisse

1511

Tastaturereignisse

1512

30.4.5 KeyPreview

1513

30.4.6 Weitere Ereignisse

1514

30.4.7 Validätsprüfungen

1514

30.4.8 SendKeys

1515

30.5 Allgemeine Methoden von Komponenten

1516

31 Windows Forms-Formulare

1518

31.1 Übersicht

1518

31.1.1 Wichtige Eigenschaften des Form-Objekts

1519

Controls-Auflistung

1520

31.1.2 Wichtige Ereignisse des Form-Objekts

1521

31.1.3 Wichtige Methoden des Form-Objekts

1522

31.2 Praktische Aufgabenstellungen

1523

31.2.1 Fenster anzeigen

1523

Nichtmodale Fenster

1524

Modale Fenster (Dialoge)

1524

31.2.2 Splash Screens beim Anwendungsstart anzeigen

1526

31.2.3 Eine Sicherheitsabfrage vor dem Schließen anzeigen

1529

31.2.4 Ein Formular durchsichtig machen

1529

31.2.5 Die Tabulatorreihenfolge festlegen

1530

31.2.6 Ausrichten von Komponenten im Formular

1531

Dock

1531

Anchor

1532

31.2.7 Spezielle Panels für flexible Layouts

1533

SplitContainer

1534

FlowLayoutPanel

1534

TableLayoutPanel

1534

31.2.8 Menüs erzeugen

1535

MenuStrip

1535

ContextMenuStrip

1537

Weitere Eigenschaften von Menüeinträgen

1538

31.3 MDI-Anwendungen

1539

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

1539

31.3.2 Die echten MDI-Fenster

1540

31.3.3 Die Kindfenster

1541

31.3.4 Automatisches Anordnen der Kindfenster

1542

31.3.5 Zugriff auf die geöffneten MDI-Kindfenster

1543

31.3.6 Zugriff auf das aktive MDI-Kindfenster

1544

31.3.7 Mischen von Kindfenstermenü/MDIContainer-Menü

1544

AllowMerge

1544

MergeAction und MergeIndex

1545

31.4 Praxisbeispiele

1545

31.4.1 Informationsaustausch zwischen Formularen

1545

Überblick

1545

Bedienoberfläche Form1 (Hauptformular)

1546

Bedienoberfläche Form2 ... Form5 (unterge­ordnete Formulare)

1546

Allgemeiner Code für Form1

1547

Variante 1: Übergabe der Formular-Referenz im Konstruktor

1548

Variante 2: Übergabe der Formular-Referenz als Eigenschaft

1549

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

1550

Variante 4: Übergabe der Formular-Referenz als Ownership

1551

Bemerkungen

1552

31.4.2 Ereigniskette beim Laden/Entladen eines Formulars

1552

Bedienoberfläche (Form1 und Form2)

1553

Änderung des Startformulars

1553

Quellcode von Form1

1554

Quellcode von Form2

1556

Test

1556

Bemerkungen

1557

32 Windows Forms-Komponenten

1558

32.1 Allgemeine Hinweise

1558

32.1.1 Hinzufügen von Komponenten

1558

32.1.2 Komponenten zur Laufzeit per Code erzeugen

1559

32.2 Allgemeine Steuerelemente

1561

32.2.1 Label

1561

32.2.2 LinkLabel

1562

Wichtige Eigenschaften

1562

Hyperlink einfügen

1562

32.2.3 Button

1563

32.2.4 TextBox

1564

Mehrzeilige Textboxen

1564

Markieren von Text

1565

PasswordChar

1566

Automatisches Vervollständigen

1566

32.2.5 MaskedTextBox

1567

32.2.6 CheckBox

1568

32.2.7 RadioButton

1570

32.2.8 ListBox

1570

32.2.9 CheckedListBox

1572

32.2.10 ComboBox

1572

32.2.11 PictureBox

1573

32.2.12 DateTimePicker

1574

32.2.13 MonthCalendar

1574

32.2.14 HScrollBar, VScrollBar

1575

32.2.15 TrackBar

1576

32.2.16 NumericUpDown

1576

32.2.17 DomainUpDown

1577

32.2.18 ProgressBar

1577

32.2.19 RichTextBox

1578

32.2.20 ListView

1579

ListViewItem

1579

ImageList

1580

Übersichten zur ListView

1580

32.2.21 TreeView

1585

Knoten zur Laufzeit erzeugen

1586

Auswerten des aktiven Knotens

1587

Wichtige Eigenschaften von TreeView

1588

Wichtige Methoden von TreeView

1589

Wichtige Ereignisse von TreeView

1589

Wichtige Eigenschaften von TreeNode

1589

Wichtige Methoden von TreeNode

1590

32.2.22 WebBrowser

1590

32.3 Container

1591

32.3.1 FlowLayout/TableLayout/SplitContainer

1591

32.3.2 Panel

1591

Oberflächen gestalten

1591

32.3.3 GroupBox

1592

32.3.4 TabControl

1593

Wichtige Eigenschaften

1594

Wichtige Ereignisse

1594

32.3.5 ImageList

1595

32.4 Menüs & Symbolleisten

1596

32.4.1 MenuStrip und ContextMenuStrip

1596

32.4.2 ToolStrip

1596

32.4.3 StatusStrip

1596

32.4.4 ToolStripContainer

1597

32.5 Daten

1597

32.5.1 DataSet

1597

32.5.2 DataGridView/DataGrid

1598

32.5.3 BindingNavigator/BindingSource

1598

32.5.4 Chart

1598

32.6 Komponenten

1600

32.6.1 ErrorProvider

1600

32.6.2 HelpProvider

1600

32.6.3 ToolTip

1600

32.6.4 BackgroundWorker

1600

32.6.5 Timer

1600

32.6.6 SerialPort

1601

32.7 Drucken

1601

32.7.1 PrintPreviewControl

1601

32.7.2 PrintDocument

1601

32.8 Dialoge

1601

32.8.1 OpenFileDialog/SaveFileDialog/FolderBrowserDialog

1601

32.8.2 FontDialog/ColorDialog

1602

32.9 WPF-Unterstützung mit dem ElementHost

1602

32.10 Praxisbeispiele

1602

32.10.1 Mit der CheckBox arbeiten

1602

Oberfläche

1602

Quellcode

1603

Test

1603

32.10.2 Steuerelemente per Code selbst erzeugen

1604

Oberfläche

1604

Quellcode

1604

Test

1606

Bemerkungen

1606

32.10.3 Controls-Auflistung im TreeView anzeigen

1606

Oberfläche

1607

Quellcode

1608

Test

1609

32.10.4 WPF-Komponenten mit dem ElementHost anzeigen

1610

Oberfläche (WPF-Control)

1611

Oberfläche (Windows Forms)

1613

33 Grundlagen Grafikausgabe

1614

33.1 Übersicht und erste Schritte

1614

33.1.1 GDI+ – Ein erster Einblick für Umsteiger

1615

Ein zentrales Grafikausgabe-Objekt

1615

Die Grafikausgabe ist zustandslos

1615

Prinzipieller Ablauf

1615

Wichtige Features

1616

33.1.2 Namespaces für die Grafikausgabe

1616

System.Drawing

1616

System.Drawing.Drawing2D

1617

System.Drawing.Imaging

1617

System.Drawing.Printing

1617

System.Drawing.Design

1618

System.Drawing.Text

1618

33.2 Darstellen von Grafiken

1618

33.2.1 Die PictureBox-Komponente

1618

33.2.2 Das Image-Objekt

1619

33.2.3 Laden von Grafiken zur Laufzeit

1620

33.2.4 Sichern von Grafiken

1620

Spezielle Einstellungen

1621

33.2.5 Grafikeigenschaften ermitteln

1621

Breite und Höhe der Grafik

1621

Auflösung

1621

Grafiktyp

1622

Interner Bitmap-Aufbau

1622

33.2.6 Erzeugen von Vorschaugrafiken (Thumbnails)

1622

33.2.7 Die Methode RotateFlip

1623

33.2.8 Skalieren von Grafiken

1624

33.3 Das .NET-Koordinatensystem

1625

33.3.1 Globale Koordinaten

1626

33.3.2 Seitenkoordinaten (globale Transformation)

1627

Translation (Verschiebung)

1627

Skalierung (Vergrößerung/Verkleinerung)

1627

Rotation

1628

33.3.3 Gerätekoordinaten (Seitentransformation)

1629

33.4 Grundlegende Zeichenfunktionen von GDI+

1630

33.4.1 Das zentrale Graphics-Objekt

1630

Wie erzeuge ich ein Graphics-Objekt?

1631

Die Invalidate-Methode

1632

Die Eigenschaft ResizeRedraw

1632

33.4.2 Punkte zeichnen/abfragen

1633

33.4.3 Linien

1634

33.4.4 Kantenglättung mit Antialiasing

1635

33.4.5 PolyLine

1636

33.4.6 Rechtecke

1636

DrawRectangle

1636

FillRectangle

1637

DrawRectangles/FillRectangles

1637

33.4.7 Polygone

1638

33.4.8 Splines

1639

33.4.9 Bézierkurven

1640

33.4.10 Kreise und Ellipsen

1641

33.4.11 Tortenstück (Segment)

1641

Kuchendiagramme

1642

33.4.12 Bogenstück

1643

33.4.13 Wo sind die Rechtecke mit den runden Ecken?

1644

33.4.14 Textausgabe

1645

Texteigenschaften

1646

Ausgabe von mehrzeiligem Text

1646

Textattribute

1647

Ausgabequalität

1647

Und wo bleibt eine Methode zum Drehen von Text?

1648

33.4.15 Ausgabe von Grafiken

1649

Skalieren

1650

33.5 Unser Werkzeugkasten

1650

33.5.1 Einfache Objekte

1650

Point, FPoint

1650

Size, FSize

1651

Rectangle, FRectangle

1651

33.5.2 Vordefinierte Objekte

1652

Vordefinierte Pinsel

1652

Vordefinierte Stifte

1652

Vordefinierte Farben

1653

Vordefinierte Icons

1653

33.5.3 Farben/Transparenz

1654

ARGB-Farben

1654

Was ist mit dem höchstwertigen Byte?

1654

33.5.4 Stifte (Pen)

1655

Einfarbige Stifte

1656

Stifte mit Füllung

1657

33.5.5 Pinsel (Brush)

1658

33.5.6 SolidBrush

1659

33.5.7 HatchBrush

1659

33.5.8 TextureBrush

1660

33.5.9 LinearGradientBrush

1661

33.5.10 PathGradientBrush

1662

33.5.11 Fonts

1663

33.5.12 Path-Objekt

1664

Füllen

1665

Fillmode

1666

33.5.13 Clipping/Region

1667

Regions

1668

Clipping

1670

33.6 Standarddialoge

1671

33.6.1 Schriftauswahl

1671

33.6.2 Farbauswahl

1672

33.7 Praxisbeispiele

1674

33.7.1 Ein Graphics-Objekt erzeugen

1674

Variante 1: Verwendung des Paint-Events

1674

Test

1674

Variante 2: Überschreiben der OnPaint-Methode

1675

Test

1675

Variante 3: Graphics-Objekt mit CreateGraphics erzeugen

1675

Test

1676

Variante 4: Verwendung des Graphics-Objekts einer PictureBox

1676

33.7.2 Zeichenoperationen mit der Maus realisieren

1676

Oberfläche

1676

Quelltext

1677

Test

1679

34 Druckausgabe

1680

34.1 Einstieg und Übersicht

1680

34.1.1 Nichts geht über ein Beispiel

1680

34.1.2 Programmiermodell

1682

34.1.3 Kurzübersicht der Objekte

1683

34.2 Auswerten der Druckereinstellungen

1683

34.2.1 Die vorhandenen Drucker

1683

34.2.2 Der Standarddrucker

1684

34.2.3 Verfügbare Papierformate/Seitenabmessungen

1685

34.2.4 Der eigentliche Druckbereich

1686

34.2.5 Die Seitenausrichtung ermitteln

1687

34.2.6 Ermitteln der Farbfähigkeit

1687

34.2.7 Die Druckauflösung abfragen

1687

34.2.8 Ist beidseitiger Druck möglich?

1688

34.2.9 Einen "Informationsgerätekontext" erzeugen

1688

34.2.10 Abfragen von Werten während des Drucks

1689

34.3 Festlegen von Druckereinstellungen

1690

34.3.1 Einen Drucker auswählen

1690

34.3.2 Drucken in Millimetern

1690

34.3.3 Festlegen der Seitenränder

1691

34.3.4 Druckjobname

1692

34.3.5 Anzahl der Kopien

1693

34.3.6 Beidseitiger Druck

1693

34.3.7 Seitenzahlen festlegen

1694

34.3.8 Druckqualität verändern

1697

34.3.9 Ausgabemöglichkeiten des Chart-Controls nutzen

1698

34.4 Die Druckdialoge verwenden

1698

34.4.1 PrintDialog

1699

34.4.2 PageSetupDialog

1700

Probleme mit den Rändern

1701

34.4.3 PrintPreviewDialog

1702

34.4.4 Ein eigenes Druckvorschau-Fenster realisieren

1703

34.5 Drucken mit OLE-Automation

1704

34.5.1 Kurzeinstieg in die OLE-Automation

1704

Programmieren der OLE-Automation

1705

34.5.2 Drucken mit Microsoft Word

1706

34.6 Praxisbeispiele

1708

34.6.1 Den Drucker umfassend konfigurieren

1708

Oberfläche (Hauptformular Form1)

1708

Oberfläche (Druckvorschau Form2)

1709

Quelltext (Form1)

1710

Quelltext (Form2)

1715

Test

1716

34.6.2 Diagramme mit dem Chart-Control drucken

1718

Oberfläche

1718

Quelltext

1718

Test

1719

34.6.3 Druckausgabe mit Word

1720

Oberfläche

1720

Quelltext

1721

Test

1723

Anmerkung ab .NET 4.0

1724

35 Windows Forms-Datenbindung

1726

35.1 Prinzipielle Möglichkeiten

1726

35.2 Manuelle Bindung an einfache Datenfelder

1727

35.2.1 BindingSource erzeugen

1727

35.2.2 Binding-Objekt

1728

35.2.3 DataBindings-Collection

1728

Bemerkungen

1728

35.3 Manuelle Bindung an Listen und Tabellen

1728

35.3.1 DataGridView

1729

35.3.2 Datenbindung von ComboBox und ListBox

1729

35.4 Entwurfszeit-Bindung an typisierte DataSets

1729

35.5 Drag & Drop-Datenbindung

1731

35.6 Navigations- und Bearbeitungsfunktionen

1731

35.6.1 Navigieren zwischen den Datensätzen

1731

35.6.2 Hinzufügen und Löschen

1731

35.6.3 Aktualisieren und Abbrechen

1732

35.6.4 Verwendung des BindingNavigators

1732

35.7 Die Anzeigedaten formatieren

1733

35.8 Praxisbeispiele

1733

35.8.1 Einrichten und Verwenden einer Datenquelle

1733

Assistent zum Konfigurieren von Datenquellen

1733

Verwenden der Datenquelle

1735

Test

1736

Abfragemethoden hinzufügen

1736

35.8.2 Eine Auswahlabfrage im DataGridView anzeigen

1737

Oberfläche

1738

Quellcode

1738

Test

1739

35.8.3 Master-Detailbeziehungen im DataGrid anzeigen

1740

Oberfläche

1740

Quellcode

1740

Test

1741

35.8.4 Datenbindung Chart-Control

1741

Oberfläche

1742

Quellcode

1744

Test

1744

36 Erweiterte Grafikausgabe

1746

36.1 Transformieren mit der Matrix-Klasse

1746

36.1.1 Übersicht

1746

36.1.2 Translation

1747

36.1.3 Skalierung

1747

36.1.4 Rotation

1748

36.1.5 Scherung

1748

36.1.6 Zuweisen der Matrix

1749

36.2 Low-Level-Grafikmanipulationen

1749

36.2.1 Worauf zeigt Scan0?

1750

36.2.2 Anzahl der Spalten bestimmen

1751

36.2.3 Anzahl der Zeilen bestimmen

1752

36.2.4 Zugriff im Detail (erster Versuch)

1752

36.2.5 Zugriff im Detail (zweiter Versuch)

1754

Weiter optimieren

1755

36.2.6 Invertieren

1756

36.2.7 In Graustufen umwandeln

1757

36.2.8 Heller/Dunkler

1758

36.2.9 Kontrast

1760

36.2.10 Gamma-Wert

1761

36.2.11 Histogramm spreizen

1761

36.2.12 Ein universeller Grafikfilter

1764

Beispiel: Eine universelle Filter-Klasse entwickeln

1764

Die Klasse GrafikFilter im Einsatz

1767

36.3 Fortgeschrittene Techniken

1768

36.3.1 Flackerfrei dank Double Buffering

1768

Eine Puffer-Bitmap erzeugen

1768

Und was ist mit der PictureBox?

1769

36.3.2 Animationen

1770

Vorbereiten des Ausgabeobjekts

1770

Styles bei Controls setzen

1771

Die eigentliche Grafikausgabe

1771

Bemerkungen

1773

36.3.3 Animated GIFs

1773

Wie lernen die Bilder das Laufen?

1774

36.3.4 Auf einzelne GIF-Frames zugreifen

1775

Wiedergabe einzelner Frames

1776

Erzeugen eines Bitmap-Strips

1776

36.3.5 Transparenz realisieren

1777

36.3.6 Eine Grafik maskieren

1778

36.3.7 JPEG-Qualität beim Sichern bestimmen

1780

36.4 Grundlagen der 3D-Vektorgrafik

1781

36.4.1 Datentypen für die Verwaltung

1781

36.4.2 Eine universelle 3D-Grafik-Klasse

1782

36.4.3 Grundlegende Betrachtungen

1783

Drehwinkel

1784

Darstellungsmöglichkeiten

1784

36.4.4 Translation

1786

36.4.5 Streckung/Skalierung

1787

36.4.6 Rotation

1788

36.4.7 Die eigentlichen Zeichenroutinen

1790

Ausgabe einer Linie

1790

Ausgabe eines Koordinatensystems

1790

36.5 Und doch wieder GDI-Funktionen ...

1792

36.5.1 Am Anfang war das Handle ...

1792

36.5.2 Gerätekontext (Device Context Types)

1795

Formular-DC über Graphics-Objekt erzeugen

1795

Formular-DC mit GetDC erzeugen

1796

36.5.3 Koordinatensysteme und Abbildungsmodi

1797

36.5.4 Zeichenwerkzeuge/Objekte

1801

Erzeugen und Parametrieren der Objekte

1802

36.5.5 Bitmaps

1803

Bitmaps kopieren

1805

Bitmaps skalieren

1806

36.6 Praxisbeispiele

1807

36.6.1 Die Transformationsmatrix verstehen

1807

Oberfläche

1807

Quelltext

1807

Test

1809

36.6.2 Eine 3D-Grafikausgabe in Aktion

1810

Oberfläche

1810

Quelltext

1810

Test/Bemerkungen

1812

36.6.3 Einen Fenster-Screenshot erzeugen

1813

Oberfläche

1813

Quelltext

1813

Test

1814

Bemerkung

1815

37 Ressourcen/Lokalisierung

1816

37.1 Manifestressourcen

1816

37.1.1 Erstellen von Manifestressourcen

1816

37.1.2 Zugriff auf Manifestressourcen

1818

Namensgebung eingebetteter Ressourcen

1818

Auflisten aller eingebetteten Ressourcen

1818

Die Inhalte eingebetteter Ressourcen auslesen

1819

37.2 Typisierte Ressourcen

1820

37.2.1 Erzeugen von .resources-Dateien

1820

37.2.2 Hinzufügen der .resources-Datei zum Projekt

1820

37.2.3 Zugriff auf die Inhalte von .resources-Dateien

1821

Bemerkungen zum Zugriff auf .resources-Dateien

1821

37.2.4 ResourceManager einer .resources-Datei erzeugen

1821

Bemerkungen

1822

37.2.5 Was sind .resx-Dateien?

1822

37.3 Streng typisierte Ressourcen

1822

37.3.1 Erzeugen streng typisierter Ressourcen

1823

37.3.2 Verwenden streng typisierter Ressourcen

1823

37.3.3 Streng typisierte Ressourcen per Reflection auslesen

1824

37.4 Anwendungen lokalisieren

1826

37.4.1 Localizable und Language

1826

37.4.2 Beispiel "Landesfahnen"

1826

37.4.3 Einstellen der aktuellen Kultur zur Laufzeit

1829

Bemerkungen

1830

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

1839

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)

1842

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 (Indexer)

1844

38.5.10 Wertebereichsbeschränkung und Fehlerprüfung

1844

38.5.11 Eigenschaften von Aufzählungstypen

1846

38.5.12 Standard Objekt-Eigenschaften

1847

38.5.13 Eigene Objekt-Eigenschaften

1847

38.6 Methoden

1849

38.6.1 Konstruktor

1850

38.6.2 Class-Konstruktor

1851

38.6.3 Destruktor

1852

38.6.4 Aufruf des Basisklassen-Konstruktors

1852

38.6.5 Aufruf von Basisklassen-Methoden

1853

38.7 Ereignisse (Events)

1853

38.7.1 Ereignis mit Standardargument definieren

1854

38.7.2 Ereignis mit eigenen Argumenten

1855

38.7.3 Ein Default-Ereignis festlegen

1856

38.7.4 Mit Ereignissen auf Windows-Messages reagieren

1856

38.8 Weitere Themen

1858

38.8.1 Wohin mit der Komponente?

1858

38.8.2 Assembly-Informationen festlegen

1859

38.8.3 Assemblies signieren

1862

Erstellen eines AssemblyKey-File

1862

38.8.4 Komponenten-Ressourcen einbetten

1862

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

1866

Bemerkung

1868

38.9 Praxisbeispiele

1868

38.9.1 AnimGif – Anzeige von Animationen

1868

Oberfläche/Ressourcen

1868

Quelltext

1869

Test

1871

38.9.2 Eine FontComboBox entwickeln

1871

Quelltext

1871

Test

1873

38.9.3 Das PropertyGrid verwenden

1873

Oberfläche

1873

Quelltext

1873

Test

1875

39 Einführung in ASP.NET

1878

39.1 ASP.NET für Ein- und Umsteiger

1878

39.1.1 ASP – Ein kurzer 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 C# 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

1889

39.2.3 Verknüpfen der Objekte mit Ereignissen

1890

39.2.4 Programm kompilieren und testen

1891

39.3 Die ASP.NET-Projektdateien

1892

39.3.1 Die ASP.NET-Projekttypen

1893

ASP.NET-Website

1894

ASP.NET-Web-Anwendungen

1894

39.3.2 ASPX-Datei(en)

1895

39.3.3 Die aspx.cs-Datei(en)

1897

39.3.4 Die Datei Global.asax

1898

39.3.5 Das Startformular

1899

39.3.6 Die Datei Web.config

1899

39.3.7 Masterpages (master-Dateien)

1902

39.3.8 Sitemap (Web.sitemap)

1902

39.3.9 Benutzersteuerelemente (ascx-Dateien)

1903

39.3.10 Die Web-Projekt-Verzeichnisse

1903

39.4 Lernen am Beispiel

1904

39.4.1 Erstellen des Projekts

1904

39.4.2 Oberflächengestaltung

1905

Formular-Titel setzen

1906

39.4.3 Ereignisprogrammierung

1906

39.4.4 Ein Fehler, was nun?

1908

Einfache Fehlerbehandlung

1909

39.4.5 Ereignisse von Textboxen

1909

39.4.6 Ein gemeinsamer Ereignis-Handler

1910

39.4.7 Eingabefokus setzen

1910

39.4.8 Ausgaben in einer Tabelle

1911

39.4.9 Scrollen der Anzeige

1913

39.4.10 Zusammenspiel mehrerer Formulare

1914

Globale Variablen?

1914

Das Page_Load-Ereignis

1914

39.4.11 Umleiten bei Direktaufruf

1915

39.4.12 Ärger mit den Cookies

1916

39.4.13 Export auf den IIS

1918

39.5 Tipps & Tricks

1919

39.5.1 Nachinstallieren IIS 7 bzw. 7.5 (Windows 7)

1919

Nachinstallieren

1919

ASP.NET registrieren

1920

39.5.2 Nachinstallieren IIS8 (Windows 8)

1920

40 Übersicht ASP.NET-Controls

1922

40.1 Einfache Steuerelemente im Überblick

1922

40.1.1 Label

1922

AccessKey/AssociatedControlID

1923

Datenbindung

1923

40.1.2 TextBox

1924

40.1.3 Button, ImageButton, LinkButton

1925

Click-Ereignis

1925

OnClientClick-Eigenschaft

1925

PostbackUrl-Eigenschaft

1926

40.1.4 CheckBox, RadioButton

1926

40.1.5 CheckBoxList, BulletList, RadioButtonList

1927

Datenbindung

1927

BulletList

1928

40.1.6 Table

1928

40.1.7 Hyperlink

1930

40.1.8 Image, ImageMap

1930

40.1.9 Calendar

1932

40.1.10 Panel

1933

40.1.11 HiddenField

1933

40.1.12 Substitution

1934

40.1.13 XML

1935

Die XML-Daten

1935

Die Transformationsdateien

1936

Verwendung und Test

1937

40.1.14 FileUpload

1937

40.1.15 AdRotator

1938

40.2 Steuerelemente für die Seitennavigation

1939

40.2.1 Mehr Übersicht mit Web.Sitemap

1939

40.2.2 Menu

1941

Datenbindung an eine SiteMap

1942

Menü ohne Datenbindung

1943

40.2.3 TreeView

1944

TreeView ohne Datenbindung

1945

40.2.4 SiteMapPath

1947

40.2.5 MultiView, View

1948

40.2.6 Wizard

1949

40.3 Webseitenlayout/-design

1951

40.3.1 Masterpages

1951

Masterpage

1952

Content Seiten

1953

40.3.2 Themes/Skins

1954

Zuweisen des aktiven Theme

1955

Skin-Datei

1955

StyleSheet

1956

Grafiken

1956

40.3.3 Webparts

1957

40.4 Die Validator-Controls

1958

40.4.1 Übersicht

1958

40.4.2 Wo findet die Fehlerprüfung statt?

1959

40.4.3 Verwendung

1959

40.4.4 RequiredFieldValidator

1960

40.4.5 CompareValidator

1961

40.4.6 RangeValidator

1963

40.4.7 RegularExpressionValidator

1963

40.4.8 CustomValidator

1964

Clientseitige Validierung

1965

Serverseitige Validierung

1965

40.4.9 ValidationSummary

1967

40.4.10 Weitere Möglichkeiten

1968

Validierung zeitweise verhindern

1968

ValidationGroup bilden

1968

Eingabefokus setzen

1968

40.5 Praxisbeispiele

1968

40.5.1 Themes und Skins verstehen

1968

Oberfläche

1969

Projekt

1969

Skin bearbeiten

1970

Style Sheet bearbeiten

1970

Quelltext

1971

Test

1972

40.5.2 Masterpages verwenden

1973

Oberfläche (Masterpage)

1973

Oberfläche (Contentpage)

1974

Quelltext

1974

Test

1975

40.5.3 Webparts verwenden

1976

Vorbereiten der Portalseite

1976

User Control programmieren

1976

Inhalte für die Webzones definieren

1977

Programmieren des Werkzeugkastens

1978

41 Datenbindung unter ASP.NET

1982

41.1 Einstiegsbeispiel

1982

41.1.1 Erstellen der ASP.NET-Website

1982

Datenbank hinzufügen

1983

GridView hinzufügen

1984

GridView an Datenquelle anbinden

1984

Test

1986

41.2 Einführung

1987

41.2.1 Konzept

1987

41.2.2 Übersicht über die DataSource-Steuerelemente

1988

41.3 SQLDataSource

1989

41.3.1 Datenauswahl mit Parametern

1991

41.3.2 Parameter für INSERT, UPDATE und DELETE

1992

41.3.3 Methoden

1994

41.3.4 Caching

1995

41.3.5 Aktualisieren/Refresh

1996

41.4 AccessDataSource

1996

41.5 ObjectDataSource

1996

41.5.1 Verbindung zwischen Objekt und DataSource

1996

41.5.2 Ein Beispiel sorgt für Klarheit

1998

41.5.3 Geschäftsobjekte in einer Session verwalten

2002

41.6 SitemapDataSource

2004

41.7 LinqDataSource

2005

41.7.1 Bindung von einfachen Collections

2005

41.7.2 Bindung eines LINQ to SQL-DataContext

2006

41.8 EntityDataSource

2008

41.8.1 Entity Data Model erstellen

2008

41.8.2 EntityDataSource anbinden

2011

41.8.3 Datenmenge filtern

2014

41.9 XmlDataSource

2014

41.10 QueryExtender

2016

41.10.1 Grundlagen

2016

41.10.2 Suchen

2017

41.10.3 Sortieren

2019

41.11 GridView

2020

41.11.1 Auswahlfunktion (Zeilenauswahl)

2020

41.11.2 Auswahl mit mehrspaltigem Index

2021

41.11.3 Hyperlink-Spalte für Detailansicht

2021

41.11.4 Spalten erzeugen

2022

41.11.5 Paging realisieren

2023

41.11.6 Edit, Update, Delete

2025

41.11.7 Keine Daten, was tun?

2025

41.12 DetailsView

2025

41.13 FormView

2027

Datenbindung im Detail

2029

41.14 DataList

2030

41.14.1 Bearbeitungsfunktionen implementieren

2031

41.14.2 Layout verändern

2032

41.15 Repeater

2033

41.16 ListView

2034

41.17 Typisierte Datenbindung

2034

41.18 Model Binding

2035

41.19 Chart

2037

42 ASP.NET-Objekte/-Techniken

2040

42.1 Wichtige ASP.NET-Objekte

2040

42.1.1 HTTPApplication

2040

42.1.2 Application

2043

42.1.3 Session

2044

Session-Variablen

2044

Beenden einer Session

2045

Ereignisse

2045

42.1.4 Page

2046

Eigenschaften

2046

Methoden

2047

Ereignisse

2048

42.1.5 Request

2049

Informationen über den Browser ermitteln

2049

QueryString-Parameter auslesen

2051

42.1.6 Response

2052

Eigenschaften

2052

Methoden

2052

Textausgabe

2053

Bilder/Dateien zum Client senden

2053

Dynamisch erzeugte Grafiken senden

2054

Neue Seiten aufrufen

2055

Wir geben zur Protokoll ...

2056

42.1.7 Server

2056

MapPath

2056

MachineName

2057

Transfer

2057

Execute

2057

42.1.8 Cookies verwenden

2057

User

2060

42.2 Fehlerbehandlung unter ASP.NET

2060

42.2.1 Fehler beim Entwurf

2060

42.2.2 Laufzeitfehler

2060

42.2.3 Eine eigene Fehlerseite

2062

42.2.4 Fehlerbehandlung im Web Form

2063

42.2.5 Fehlerbehandlung in der Anwendung

2064

42.2.6 Alternative Fehlerseite einblenden

2065

42.2.7 Lokale Fehlerbehandlung

2066

42.2.8 Seite nicht gefunden – was nun?

2067

42.3 E-Mail-Versand in ASP.NET

2067

42.3.1 Übersicht

2068

42.3.2 Mail-Server bestimmen

2068

42.3.3 Einfache Text-E-Mails versenden

2070

Variante 1

2070

Variante 2

2070

42.3.4 E-Mails mit Dateianhang

2071

42.4 Sicherheit von Webanwendungen

2072

42.4.1 Authentication

2072

Anonyme Anmeldung

2072

Forms Authentication

2073

Windows Authentication

2073

42.4.2 Forms Authentication realisieren

2073

Login-Dialog

2074

Die Änderungen in der Web.config

2075

Test

2076

Weitere Möglichkeiten der Authentifizierung

2077

42.4.3 Impersonation

2077

42.4.4 Authorization

2078

File Authorization

2078

URL Authorization

2078

42.4.5 Administrieren der Website

2080

Voraussetzung

2080

ASP.NET-Konfigurationsoberfläche

2081

Auswahl des Authentifizierungstyps

2082

Neuen Nutzer erstellen

2082

Rechte einschränken

2083

42.4.6 Steuerelemente für das Login-Handling

2084

Login

2084

LoginStatus

2085

LoginName

2085

LoginView

2085

PasswortRecovery

2086

CreateUserWizard

2087

ChangePasswort

2088

42.4.7 Programmieren der Sicherheitseinstellungen

2088

42.5 AJAX in ASP.NET-Anwendungen

2090

42.5.1 Was ist AJAX und was kann es?

2090

42.5.2 Die AJAX-Controls

2091

ScriptManager

2092

UpdatePanel

2092

UpdateProgress

2094

Timer

2094

42.5.3 AJAX-Control-Toolkit

2095

42.6 User Controls/Webbenutzersteuerelemente

2096

User Controls

2096

Custom Controls

2096

42.6.1 Ein simples Einstiegsbeispiel

2097

Entwurf

2097

Quellcode

2098

Einbindung

2099

Test

2099

Eigene Eigenschaften definieren

2099

Fazit

2100

42.6.2 Dynamische Grafiken im User Control anzeigen

2100

Dynamisches Senden der Grafik

2101

Entwurf des Controls

2101

Verwendung und Test

2103

42.6.3 Grafikausgaben per User Control realisieren

2105

Das User Control

2105

Einbindung/Programmierung

2106

Test

2107

43 Silverlight-Entwicklung

2110

43.1 Einführung

2110

43.1.1 Zielplattformen

2111

43.1.2 Silverlight-Applikationstypen

2111

Silverlight-Anwendung

2112

Silverlight-Navigationsanwendung

2112

Silverlight Out-of-Browser-Anwendung

2113

43.1.3 Wichtige Unterschiede zu den WPF-Anwendungen

2113

Einschränkungen durch das Silverlight-Konzept

2113

Unterschiede durch unterschiedliche Codebasis

2114

43.1.4 Vor- und Nachteile von Silverlight-Anwendungen

2115

WPF-ClickOnce-Anwendungen

2115

ASP.NET/AJAX

2115

FLASH

2116

Fazit

2116

Updates/Deinstallation

2118

43.2 Die Silverlight-Anwendung im Detail

2118

43.2.1 Ein kleines Beispielprojekt

2119

43.2.2 Das Application Package und das Test-Web

2121

.xap-Package

2121

Silverlight.js

2121

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

2122

43.3 Die Projektdateien im Überblick

2124

43.3.1 Projektverwaltung mit App.xaml & App.xaml.cs

2125

Startup

2126

Exit

2127

UnhandledException

2127

Weitere Eigenschaften und Methoden der Application-Klasse

2127

43.3.2 MainPage.xaml & MainPage.xaml.cs

2127

43.3.3 AssemblyInfo.cs

2128

43.4 Fenster und Seiten in Silverlight

2128

43.4.1 Das Standardfenster

2129

43.4.2 Untergeordnete Silverlight-Fenster

2130

43.4.3 UserControls für die Anzeige von Detaildaten

2132

Ein-/Ausblenden von UserControls

2132

Hinzufügen/Entfernen von UserControls

2132

43.4.4 Echte Windows

2133

43.4.5 Navigieren in Silverlight-Anwendungen

2134

Projekt erzeugen

2134

Die Page-Klasse

2135

Der Navigations-Frame

2137

43.5 Datenbanken/Datenbindung

2139

43.5.1 ASP.NET-Webdienste/WCF-Dienste

2140

Einfügen der SQL Server-Datenbank

2140

Erstellen des EDM-Datenmodells

2141

Erstellen des ASP.NET Webdienstes

2142

Alternative: Erstellen eines WCF Dienstes

2144

Einbinden der Dienste in das Silverlight-Projekt

2145

Konfigurieren der Silverlight-Oberfläche

2146

Abrufen der Daten

2147

Zusammenfassung

2148

43.5.2 WCF Data Services

2149

Grundlagen

2149

Einfügen der SQL Server-Datenbank

2152

Erstellen des Entity Data Models

2152

Erstellen des WCF Data Service

2153

Einbinden des WCF Data Service in das Silverlight-Projekt

2155

Konfigurieren der Silverlight-Oberfläche

2155

Abrufen der Daten

2156

Bearbeiten der Daten

2157

Arbeiten mit LINQ und Erweiterungsmethoden

2158

43.6 Isolierter Speicher

2160

43.6.1 Grundkonzept

2160

43.6.2 Das virtuelle Dateisystem verwalten

2161

Wieviel Platz ist verfügbar?

2161

Ich will mehr!

2162

Unterverzeichnisse erzeugen

2162

Anzeige von Dateien und Verzeichnissen

2162

Dateien/Verzeichnisse löschen

2163

43.6.3 Arbeiten mit Dateien

2164

Schreiben

2164

Lesen von Dateien

2164

43.7 Fulltrust-Anwendungen

2165

43.8 Praxisbeispiele

2168

43.8.1 Eine Out-of-Browser-Applikation realisieren

2168

Vorgehensweise

2168

Installation

2170

Bemerkungen

2171

43.8.2 Out-of-Browser-Anwendung aktualisieren

2172

Quellcode

2172

43.8.3 Testen auf aktive Internetverbindung

2173

Quellcode

2173

43.8.4 Auf Out-of-Browser-Anwendung testen

2174

Quellcode

2174

43.8.5 Den Browser bestimmen

2174

Quellcode

2174

Test

2175

43.8.6 Parameter an das Plug-in übergeben

2175

Oberfläche

2175

Quellcode (MainPage.xaml.cs)

2175

Quellcode (App.xaml.cs)

2176

Quellcode der umgebenden HTML-Seite

2176

Test

2177

43.8.7 Auf den QueryString zugreifen

2177

Oberfläche

2177

Quellcode

2177

Test

2178

43.8.8 Timer in Silverlight nutzen

2178

Oberfläche

2178

Quellcode

2178

Test

2179

43.8.9 Dateien lokal speichern

2179

Oberfläche

2179

Quellcode

2180

Bemerkung

2180

43.8.10 Drag & Drop realisieren

2181

Oberfläche

2181

Quelltext

2181

Test

2182

43.8.11 Auf die Zwischenablage zugreifen

2182

Oberfläche

2182

Quelltext

2183

Test

2183

43.8.12 Weitere Fenster öffnen

2184

Oberfläche (MainPage)

2184

Quellcode (MainPage.xaml.cs)

2185

Oberfläche (SilverlightControl1)

2186

Quellcode (SilverlightControl1.xaml.cs)

2186

Test

2186

Bemerkungen

2186

Index

2188

 

© 2009-2024 ciando GmbH