Rheinwerk Computing :: Visual Basic 2008 (original) (raw)
Inhaltsverzeichnis
1 Einführung
1.1 Warum .NET?
1.1.1 Ein paar Worte zu diesem Buch
1.1.2 Die Beispielprogramme
1.2 .NET unter die Lupe genommen
1.2.1 .NET – Ein paar allgemeine Eigenschaften
1.2.2 Das Sprachenkonzept
1.2.3 Common Language Specification (CLS)
1.2.4 Common Type System (CTS)
1.2.5 Common Language Runtime (CLR)
1.2.6 .NET-Klassenbibliothek
1.2.7 Das .NET Framework
1.2.8 Das Konzept der Namensräume
1.3 Assemblies
1.3.1 Die Metadaten
1.3.2 Das Manifest
1.4 Die Entwicklungsumgebung
1.4.1 Editionen von Visual Studio 2008
1.4.2 Hard- und Softwareanforderungen
1.4.3 Die Installation
1.4.4 Die Entwicklungsumgebung von Visual Studio
2 Grundlagen der Sprachsyntax
2.1 Konsolenanwendungen
2.1.1 Allgemeine Anmerkungen
2.1.2 Der Projekttyp »Konsolenanwendung«
2.1.3 Die Vorlage »Konsolenanwendung«
2.2 Kommentare und Anweisungen
2.2.1 Einfache Kommentare
2.2.2 Hilfekommentare
2.2.3 Funktionsaufrufe (Methoden)
2.2.4 Anweisungen
2.3 Programmausführung
2.3.1 Ausgabe mit WriteLine
2.3.2 Start und Test
2.3.3 Unterbrechung mit ReadLine
2.4 Projektorganisation
2.4.1 Namensräume und Imports
2.4.2 Lösungen als Hyperprojekt
2.4.3 Existierende Projekte hinzufügen
2.4.4 Neues Projekt hinzufügen
2.4.5 Quellcodegliederung
2.4.6 Refactoring
2.5 Variablen und Datentypen
2.5.1 Explizite und implizite Variablen (Option Explicit)
2.5.2 Typisierte und untypisierte Variablen (Option Strict)
2.5.3 Variablendeklaration
2.5.4 Einfache Datentypen
2.5.5 Sichtbarkeit und Lebensdauer
2.5.6 Initialisierung von Variablen
2.5.7 Datentypkonvertierung
2.5.8 Funktionen
2.5.9 Schlüsselwörter
2.5.10 Zusammenfassung
2.6 Ein- und Ausgabemethoden der Klasse »Console«
2.6.1 Ausgabe mit Write und WriteLine
2.6.2 Einlesen mit Read und ReadLine
2.7 Operatoren
2.7.1 Arithmetische Operatoren
2.7.2 Relationale Operatoren
2.7.3 Logische Operatoren
2.7.4 Bitweise Operatoren
2.7.5 Verkettungsoperator
2.7.6 Zuweisungsoperatoren
2.7.7 Operatorprioritäten
2.7.8 Zusammenfassung
2.8 Fehlerbehandlung
2.8.1 Ohne Fehlerbehandlung
2.8.2 Funktionsweise von Try/Catch/Finally
2.8.3 Try/Catch
2.8.4 Try/Catch/Finally
2.8.5 Try/Finally
2.8.6 Rethrow
2.8.7 Spezifische Ausnahmen und mehrere Catch-Zweige
2.8.8 Unstrukturierte Fehlerbehandlung
2.9 Kontrollstrukturen
2.9.1 Die If-Anweisung
2.9.2 Select-Case-Anweisung
2.9.3 Gültigkeitsbereich einer Variablendeklaration
2.9.4 Entscheidungsfunktionen
2.9.5 If-Operator
2.9.6 Bedingte Kompilierung
2.9.7 Zusammenfassung
2.10 Programmschleifen
2.10.1 Do und While
2.10.2 For
2.10.3 Gültigkeitsbereich einer Variablendeklaration
2.10.4 Exit und Continue
2.10.5 GoTo
2.10.6 Zusammenfassung
2.11 Datenfelder (Arrays)
2.11.1 Eindimensionale Arrays
2.11.2 Mehrdimensionale Arrays
2.11.3 Initialisierung
2.11.4 Arrayname und Kopien
2.11.5 Speicherbelegung und Redimensionierung
2.11.6 Jagged Arrays
2.11.7 Feldgröße
2.11.8 Zusammenfassung
3 Klassendesign
3.1 Objektorientierung
3.1.1 Einführung
3.1.2 Vorteile
3.1.3 Klassenimplementierung in .NET
3.1.4 Klassen in Visual Basic
3.1.5 Projekttyp »Klassenbibliothek«
3.1.6 Bemerkung zu den Codefragmenten
3.1.7 Objekte durch New
3.1.8 Ausnahmen mit Throw auslösen
3.1.9 Datentypen
3.1.10 Sichtbarkeit der Klasse
3.1.11 Aufteilung der Definition mit Partial
3.1.12 Grafikbibliothek: Beispiel für Kapitel 3 und 4
3.2 Kapselung
3.2.1 Kombinationen
3.2.2 Private
3.2.3 Sichtbarkeitsmodifikatoren
3.2.4 Lokale Variablen
3.2.5 Softwareschutz
3.2.6 Grafikbibliothek: private Größe des Rechtecks
3.3 Verhalten (Methoden)
3.3.1 Prinzip
3.3.2 Verlassen der Methode
3.3.3 Parameter
3.3.4 Überladung (Overloads)
3.3.5 Rückgabewert
3.3.6 Reine Deklaration mit Partial
3.3.7 Grafikbibliothek: Zugriffsmethoden auf die Größe des Rechtecks
3.4 Bindung
3.4.1 Klassenbindung mit Shared
3.4.2 Klassenkonstruktoren
3.4.3 Externe Funktionen
3.4.4 Grafikbibliothek: Rechteckübergreifendes
3.5 Objektinitialisierung mit Konstruktoren
3.5.1 Objektkonstruktoren
3.5.2 Nichtöffentliche Konstrukturen
3.5.3 Grafikbibliothek: Initialisierung des Rechtecks
3.6 Zustände (Felder)
3.6.1 Deklaration und Initialisierung
3.6.2 Sichtbarkeit
3.6.3 Konstanten: ReadOnly und Const
3.6.4 With
3.6.5 Grafikbibliothek: Konstanten des Rechtecks
3.7 Eigenschaften
3.7.1 Kontrolle beim Aufrufer
3.7.2 Zugriffsmethoden
3.7.3 Getter und Setter: Property
3.7.4 Indexer
3.7.5 Standardeigenschaft: Default
3.7.6 Schreibschutz und Leseschutz: ReadOnly und WriteOnly
3.7.7 Sichtbarkeit
3.7.8 Klammern
3.7.9 Grafikbibliothek: Eigenschaften des Rechtecks
3.8 Innere Klassen
3.8.1 Beziehung zur äußeren Klasse
3.8.2 Sichtbarkeit
3.8.3 Grafikbibliothek: Position des Rechtecks
3.9 Dynamisches Verhalten: Delegate und Function
3.9.1 Funktionszeiger: Delegates
3.9.2 Automatisch generierter Code
3.9.3 Mehrere Aktionen gleichzeitig
3.9.4 Asynchrone Aufrufe
3.9.5 Funktionsobjekte: Function (λ-Ausdrücke)
3.9.6 Umwandlungen
3.9.7 Grafikbibliothek: Vergleich von Rechtecken
3.10 Ereignisse
3.10.1 Ereignis: Event und RaiseEvent
3.10.2 Statische Methodenbindung WithEvents und Handles
3.10.3 Dynamische Methodenbindung: AddHandler und RemoveHandler
3.10.4 Benutzerdefinierte Ereignisse: Custom Event
3.10.5 Umwandlungen
3.10.6 Grafikbibliothek: Größenänderungen von Rechtecken überwachen
3.11 Benutzerdefinierte Operatoren
3.11.1 Prinzip
3.11.2 Überladung
3.11.3 Vergleich
3.11.4 Typumwandlung mit CType: Widening und Narrowing
3.11.5 Wahrheitswerte: IsTrue und IsFalse
3.11.6 Grafikbibliothek: Addition und Umwandlung von Rechtecken
3.12 Alle Klassenelemente
3.12.1 Der Namensraum My
3.13 Vererbung
3.13.1 Klassenbeziehung durch Inherits
3.13.2 Sichtbarkeitsmodifikatoren
3.13.3 Zugriff auf Eltern mit MyBase
3.13.4 Modifikation: Shadows und Overloads (Overrides)
3.13.5 Abstrakte Klassen: MustInherit und MustOverride
3.13.6 Spezifische Catch-Blöcke
3.13.7 Eigene Ausnahmen
3.13.8 Arrays
3.13.9 Grafikbibliothek: neue Vielecke
3.14 Polymorphie
3.14.1 Virtuelle Methoden: Overridable und Overrides
3.14.2 Unterbrechen: Overloads, Shadows und Overrides
3.14.3 Unterbinden: NotInheritable, NotOverridable und MyClass
3.14.4 Konstruktoren
3.14.5 Equals
3.14.6 ToString
3.14.7 Grafikbibliothek: Objektsammlungen
3.15 Schnittstellen: Interface und Implements
3.15.1 Benennungen und Parameter
3.15.2 Schnittstellen und Vererbung
3.15.3 Schnittstellenvererbung
3.15.4 Schnittstelle oder abstrakte Klasse?
3.15.5 Grafikbibliothek: Flächen
3.16 Lebensende eines Objekts
3.16.1 Garbage Collector
3.16.2 Destruktoren
3.16.3 Dispose und Using
4 Weitere Datentypen
4.1 Module
4.2 Strukturen
4.2.1 Vor- und Nachteile von Referenz- und Werttypen
4.2.2 Initialisierung und Konstruktoren
4.2.3 Boxing
4.2.4 Innere Strukturen
4.2.5 ValueType
4.3 Enumerationen
4.3.1 Datentyp
4.3.2 System.Enum
4.4 Generisches
4.4.1 Einschränkungen
4.4.2 Innere generische Typen
4.4.3 Vererbung und Überladung
4.4.4 Sichtbarkeit
4.4.5 Bindung
4.4.6 Rekursive Typen
4.4.7 Generische Typen in .NET
4.5 Werttypen mit dem Wert Nothing
4.5.1 Typumwandlungen
4.5.2 Logische Operatoren
4.5.3 Boxing
4.6 Anonyme Klassen
4.6.1 Automatische Namen
4.6.2 Schlüssel und Equals
4.6.3 Innere anonyme Klassen
4.6.4 Generierter Code
4.7 Spezielle Typen
4.8 Attribute
4.8.1 Beispiel: Bedingte Kompilierung
4.8.2 Codeerzeugung: DesignerGenerated
4.8.3 Standardinstanzen: MyGroupCollectionAttribute
4.8.4 Klassenerweiterungen: Extension
4.8.5 Attribute abfragen
4.8.6 Benutzerdefinierte Attribute
5 Multithreading
5.1 Start eines Threads
5.1.1 Parameterloser Start
5.1.2 Start mit Parameter
5.1.3 Hintergrundthreads
5.1.4 Threadeigenschaften
5.2 Zusammenspiel
5.2.1 Priorität
5.2.2 Warten mit Sleep
5.2.3 Unterbrechen mit Interrupt
5.2.4 Abbruch mit Abort
5.2.5 Warten mit Join
5.2.6 Warten erzwingen mit Suspend
5.2.7 Threadzustände
5.2.8 Die Klasse Thread
5.3 Gesicherter Datenaustausch
5.3.1 Objekte sperren mit Monitor
5.3.2 Codebereiche mit SyncLock sperren
5.3.3 Sperrung mit Zustand
5.3.4 Atomare Operationen
5.3.5 Attributgesteuerte Synchronisation
5.4 Asynchrone Methodenaufrufe
5.4.1 Aufruf
5.4.2 Rückruf
5.4.3 Zustand
5.4.4 Rückgabe
5.4.5 ByRef-Parameter
5.5 Threadpools
6 Collections und LINQ
6.1 Sammlungsschnittstellen
6.1.1 IEnumerable
6.1.2 ICollection
6.1.3 IDictionary
6.1.4 IList
6.2 Sammlungsklassen
6.2.1 Collection
6.2.2 List
6.2.3 Wörterbücher
6.2.4 Schlangen
6.2.5 Gleichheit
6.3 Array
6.3.1 Die Eigenschaften eines Array-Objekts
6.3.2 Methoden von Array
6.4 LINQ
6.4.1 Neue Sprachkonzepte
6.4.2 Erweiterungsmethoden
6.4.3 Abfragesyntax
6.4.4 Abfrageoperatoren
6.4.5 From-Klausel
6.4.6 Der Restriktionsoperator Where
6.4.7 Projektionsoperatoren
6.4.8 Sortieroperatoren
6.4.9 Gruppieren mit GroupBy
6.4.10 Verknüpfungen mit Join
6.4.11 Die Set-Operator-Familie
6.4.12 Die Familie der Aggregatoperatoren
6.4.13 Generierungsoperatoren
6.4.14 Quantifizierungsoperatoren
6.4.15 Aufteilungsoperatoren
6.4.16 Die Elementoperatoren
7 Eingabe und Ausgabe
7.1 Namensräume der Ein- bzw. Ausgabe
7.2 Ausnahmebehandlung
7.3 Dateien und Verzeichnisse
7.3.1 Dateizugriff mit File
7.3.2 Dateizugriff mit FileInfo
7.3.3 Die Klassen Directory und DirectoryInfo
7.3.4 Dateizugriffe in Aktion
7.3.5 Pfade mit Path
7.3.6 Laufwerksinformation mit DriveInfo
7.3.7 SpecialDirectories
7.4 Datenflüsse in Streams
7.4.1 Die abstrakte Klasse Stream
7.4.2 Stream-Klassen im Überblick
7.4.3 Dateizugriff mit FileStream
7.5 Texte mit TextReader und TextWriter
7.5.1 Texte mit StreamWriter schreiben
7.5.2 Texte mit StreamReader lesen
7.5.3 Zeichenketten mit StringWriter und StringReader
7.6 Binärdaten mit BinaryReader und BinaryWriter
7.6.1 Schreiben mit BinaryWriter
7.6.2 Lesen mit BinaryReader
7.6.3 Binäre Datenströme auswerten
7.6.4 Komplexe binäre Daten
7.7 Serialisierung
7.7.1 Serialisierungsverfahren
7.7.2 Testklassen
7.7.3 Serialisierung mit BinaryFormatter
7.7.4 Serialisierung mit SoapFormatter
7.7.5 Serialisierung mit XmlSerializer
8 Anwendungen: Struktur und Installation
8.1 Bibliotheken
8.1.1 Projekte in einer Projektmappe
8.1.2 Zugriffsmodifikatoren
8.1.3 Einbinden einer Klassenbibliothek
8.2 Assemblies
8.2.1 Struktur einer Assembly
8.2.2 Globale Assemblies
8.3 Konfigurationsdateien
8.3.1 Die verschiedenen Konfigurationsdateien
8.3.2 Struktur einer Anwendungskonfigurationsdatei
8.3.3 Anwendungskonfigurationsdatei automatisch erstellen
8.3.4 Anwendungskonfiguarionsdatei auswerten
8.3.5 Editierbare, anwendungsbezogene Einträge mit
8.3.6 Versionsumleitung in einer Konfigurationsdatei
8.3.7 Die Herausgeberrichtliniendatei
8.4 Weitergabe mit MS-Installer
8.4.1 Weitergabeprojekte
8.4.2 Windows-Installer
8.4.3 Setup-Projekt
8.4.4 Editoren eines Weitergabeprojekts
8.4.5 Dateisystem-Editor
8.4.6 Der Registrierungs-Editor
8.4.7 Dateityp-Editor
8.4.8 Benutzeroberflächen-Editor
8.4.9 Editor für benutzerdefinierte Aktionen
8.4.10 Editor für Startbedingungen
8.5 ClickOnce-Verteilung
8.5.1 Erstellen einer ClickOnce-Anwendung
8.5.2 Die Installation einer ClickOnce-Anwendung
9 Code erstellen und debuggen
9.1 Ausnahmen
9.1.1 Methodenaufrufe
9.1.2 Hierarchie der Ausnahmen
9.1.3 Eigene Ausnahmen
9.2 Protokollierung
9.2.1 Ausgabe mit Debug
9.2.2 Ausgabe mit Trace
9.2.3 Ausgabeziel mit TraceListener
9.2.4 Steuerung mit Konfigurationsdateien
9.3 Visual Studio Debugger
9.3.1 Debuggen im Haltemodus
9.3.2 Fenster zum Zugriff auf Variablen
9.4 Unit Tests
9.5 Refactoring
9.6 UML
9.6.1 Klassendiagramm
9.6.2 Toolbox
9.6.3 Das Fenster Klassendetails
9.6.4 Klassendiagramme als Bilder exportieren
9.7 Codeausschnitte (Code Snippets)
9.7.1 Anatomie
9.7.2 Eigene Codeausschnitte
10 Einige Basisklassen
10.1 Object
10.1.1 Methoden
10.1.2 GetType
10.1.3 Gleichheit
10.1.4 Objekte kopieren
10.2 String
10.2.1 Erzeugung
10.2.2 Eigenschaften
10.2.3 Methoden
10.3 Ausgabeformatierung
10.3.1 Formatierung mit der Methode String.Format
10.3.2 Formatierung mit ToString
10.3.3 Benutzerdefinierte Formatierung
10.4 StringBuilder
10.4.1 Kapazität
10.4.2 Konstruktoren
10.4.3 Eigenschaften
10.4.4 Methoden
10.5 Zeitmessung
10.5.1 Die Zeitspanne Tick
10.5.2 Konstruktoren von DateTime
10.5.3 Eigenschaften von DateTime
10.5.4 Methoden von DateTime
10.5.5 Zeitspanne: TimeSpan
11 Windows-Anwendungen erstellen
11.1 Entwicklungsumgebung
11.2 Eine erste Windows-Anwendung
11.3 Das Codegerüst einer Windows-Anwendung
11.3.1 Einstellungen
11.3.2 Automatisch generierter Startcode
11.3.3 Nachrichtenschleife
11.3.4 Dateien *.vb und *.Designer.vb
11.4 Ereignisse grafischer Windows-Komponenten
11.4.1 Syntax und Nomenklatur
11.4.2 Ereignisse mit Ereignisdaten
11.4.3 Ereignisbehandlung in Visual Studio
11.4.4 Ereignisbehandlung mit OnEreignis-Methoden
11.5 Die Basisklassen einer Form
11.5.1 Control
11.5.2 ScrollableControl
11.5.3 ContainerControl
11.6 Eigenschaften einer Form
11.6.1 Rahmendarstellung
11.6.2 Formspezifisches Symbol
11.6.3 Schaltflächen der Titelleiste
11.6.4 Transparenz
11.6.5 Immer obenauf
11.6.6 Mauszeiger verändern
11.6.7 Farbe (Color)
11.6.8 Schriftart (Font)
11.6.9 Abmessungen einer Form
11.6.10 Position eines Fensters
11.6.11 Anzeigezustand eines Fensters
11.6.12 Arbeitsfläche des Fensters (Clientbereich)
11.6.13 Fokussierreihenfolge
11.6.14 Standardschaltflächen eines Fensters
11.6.15 Unterelemente (ControlsCollection)
11.6.16 Eigenschaften des Form-Objekts
11.7 Ereignisse einer Form
11.7.1 Erzeugen eines Fensters
11.7.2 Größenänderung einer Form
11.7.3 Schließen eines Fensters
11.8 Anwendungen mit mehreren Fenstern
11.8.1 Neue Formulare hinzufügen
11.8.2 Lebenszyklus von Formularen
11.8.3 Mehrere Fenster verwalten
11.8.4 Begrüßungsfenster (Splash)
11.9 Modale Dialogfenster
11.9.1 Layout eines Dialogfensters
11.9.2 Rückgabewert
11.9.3 Eine Form modal öffnen
11.10 Meldungsfenster mit MessageBox
11.10.1 Anzeige mit Show
11.10.2 Rückgabewert der Meldungsfenster
11.11 Die Klasse Application
11.11.1 Die Datei AssemblyInfo.vb
11.11.2 Wartende Ereignisse abrufen (DoEvents)
11.11.3 Eigenschaften und Methoden
12 Die wichtigsten Steuerelemente
12.1 Gemeinsamkeiten
12.1.1 Größe und Position
12.1.2 Sichtbarkeit und Aktivierungszustand
12.1.3 Beschriftung
12.1.4 Farben
12.1.5 Grafische Darstellung
12.1.6 Zugriffsrechte
12.1.7 Zusatzinformationen speichern
12.1.8 Position bei Größenänderung der Form
12.1.9 Die Größe mit der Form skalieren
12.1.10 Kindelemente
12.1.11 Steuerelemente fokussieren
12.1.12 Maus- und Tastaturereignisse
12.2 Schaltflächen (Button)
12.2.1 Rahmendarstellung
12.2.2 Beschriftung und Grafiken
12.3 Auswahlkästchen (CheckBox)
12.3.1 Eigenschaften
12.3.2 Drei Zustände
12.4 Gruppierung (GroupBox)
12.5 Optionsschaltflächen (RadioButton)
12.5.1 Gruppierung
12.5.2 Eigenschaften
12.5.3 Zustandswechsel programmieren
12.6 Texteingabefelder (TextBox)
12.6.1 Einzeilige Eingabefelder
12.6.2 Mehrzeilige Eingabefelder
12.7 Beschriftungen (Label)
12.8 Popuptextfenster (ToolTip)
12.8.1 Definition von Hinweistexten
12.8.2 Anzeigedauer der Texte
12.8.3 Weitere Eigenschaften
12.9 Auswahllisten (ListBox)
12.9.1 Daten einer ListBox
12.9.2 Darstellung einer Listbox
12.9.3 Einfach- und Mehrfachauswahl
12.9.4 Listboxen mit Einfachauswahl
12.9.5 Listboxen mit Mehrfachauswahl
12.9.6 Benutzerdefinierte Sortierung
12.9.7 Auswahlliste mit Datenquelle (DataSource)
12.10 Markierte Auswahllisten (CheckedListBox)
12.11 Kombinationslistenfelder (ComboBox)
12.11.1 Ereignisse
12.11.2 Autovervollständigung
12.12 Standarddialoge
12.12.1 Datei zum Öffnen wählen (OpenFileDialog)
12.12.2 Datei zum Speichern wählen (SaveFileDialog)
12.12.3 Ordner selektieren (FolderBrowserDialog)
12.12.4 Farbe bekennen (ColorDialog)
12.12.5 Schriftart wählen (FontDialog)
12.13 Menüs, Symbol- und Statusleisten
12.13.1 Menüsammlung (ToolStripContainer)
12.13.2 Menüdefinition
12.13.3 Eigenschaften von Menüs
12.13.4 Kontextmenüs
12.13.5 Symbolleisten
12.13.6 Statusleisten
12.14 Bildlaufleisten (HScrollBar und VScrollBar)
12.15 Fortschrittsbalken (ProgressBar)
12.16 Animationen (Timer)
12.17 Container (Panel)
12.18 Registerkarten (TabControl)
12.19 Baumansichten (TreeView und TreeNode)
12.19.1 Knotenpunkte definieren
12.19.2 Eigenschaften
12.19.3 Ereignisse
12.19.4 Knotenexpansion und -reduktion
12.19.5 Knoten (TreeNode)
12.20 Teiler (Splitter und SplitContainer)
12.20.1 Splitter
12.20.2 SplitContainer
12.21 Listenansicht (ListView)
12.21.1 Beteiligte Klassen
12.21.2 Eigenschaften und Ereignisse
12.21.3 Listenelemente (ListViewItem)
12.21.4 Unterelemente in Spalten (ListViewSubItem)
12.21.5 Spaltenüberschriften (ColumnHeader)
12.21.6 Listenelemente Gruppen zuordnen
12.21.7 Sortierung der Spalten
12.21.8 Listenelemente ändern
12.21.9 Dateiexplorer-Beispiel
13 Tastatur- und Mausereignisse
13.1 Die Tastaturschnittstelle
13.1.1 Allgemeines
13.1.2 Tastaturereignisse
13.1.3 Die Ereignisse KeyDown und KeyUp
13.1.4 Das Ereignis KeyPress
13.1.5 Tastaturereignisse der Form
13.1.6 Tastatureingaben simulieren
13.2 Die Mausschnittstelle
13.2.1 Die Ereignisse MouseDown, MouseMove und MouseUp
13.2.2 Das Ereignis MouseWheel
13.2.3 Weitere Mausereignisse
13.2.4 Click-Ereignisse
13.2.5 Verhalten der Maus
14 MDI-Anwendungen
14.1 Das MDI-Hauptfenster
14.2 Die Subfenster
14.3 Zugriff auf die Subfenster
14.3.1 Alle Subfenster
14.3.2 Aktive Subfenster
14.3.3 Subfenster eines bestimmten Typs
14.4 Menü einer MDI-Anwendung
14.4.1 Subfenster anordnen
14.4.2 Subfenster mit eigenen Menüs
14.5 Symbol- und Statusleiste des Subfensters
14.6 Die Liste der geöffneten untergeordneten Fenster
14.7 Beispiel einer MDI-Anwendung
15 Grafiken mit GDI+
15.1 Namensräume von GDI+
15.2 Die Klasse Graphics
15.2.1 Ein Graphics-Objekt besorgen
15.2.2 Neuzeichnen mit ResizeRedraw und Invalidate
15.2.3 Zerstören grafischer Objekte (Dispose)
15.2.4 Koordinatensystem
15.2.5 Koordinatenursprung
15.2.6 Zeichnen mit der Klasse Graphics
15.2.7 Eine Linie
15.2.8 Mehrere Linien
15.2.9 Rechtecke
15.2.10 Polygone
15.2.11 Ellipsen und Teile davon
15.2.12 Kurvenzüge
15.2.13 Bézierkurven
15.3 Stifte und Farben
15.3.1 Linienstile mit Pen
15.3.2 Farben mit Color
15.4 Schriftdarstellung
15.4.1 Schriftart (Font und FontFamily)
15.4.2 Schriftstil mit FontStyle
15.4.3 Ausgabe einer Zeichenfolge
15.4.4 Abmessungen mit MeasureString
15.4.5 Textlayout mit StringFormat
15.5 Bilddateien
15.5.1 Bilder und Grafiken in .NET
15.5.2 Bitmap-Dateiformate
15.5.3 Bilder vom Typ Image
15.5.4 Bitmaps
16 Drucken
16.1 Überblick
16.1.1 PrintDocument
16.1.2 PrinterSettings
16.1.3 PageSettings
16.2 Einen Druckauftrag erteilen
16.2.1 Methoden und Eigenschaften von PrintDocument
16.2.2 Die Ereignisse in PrintDocument
16.2.3 Die Ereignisse BeginPrint und EndPrint
16.2.4 Das Ereignis QueryPageSettings
16.2.5 Das Ereignis PrintPage
16.2.6 Beenden des Druckauftrags
16.2.7 WYSIWYG
16.3 Seiteneinstellungen mit PageSettings
16.4 Der Drucker als PrinterSettings
16.4.1 Mehrere installierte Drucker
16.4.2 Eigenschaften von PrinterSettings
16.5 Steuerelemente zum Drucken
16.5.1 PrintDocument
16.5.2 PrintDialog
16.5.3 PageSetupDialog
16.5.4 PrintPreviewDialog
16.5.5 PrintPreviewControl
16.6 Drucken von Grafiken
16.6.1 Das Problem der Maßeinheiten
16.6.2 Festlegung der Einheiten und Skalierung
16.6.3 Größenrichtige Ausgabe einer Grafik
16.7 Mehrseitiger Text
17 Entwickeln von Steuerelementen
17.1 Entwicklungsszenarien
17.2 Testen eines Steuerelements
17.3 Steuerelemente mit UserControl
17.3.1 Definition eines Benutzersteuerelements
17.3.2 Eigenschaften eines Benutzersteuerelements
17.3.3 Attribute eines Benutzersteuerelements
17.3.4 Ereignisse eines Benutzersteuerelements
17.3.5 Bereitstellen einer Toolbox-Bitmap
17.3.6 Code für EllipseLabel
17.4 Ein Steuerelement von einem vorhandenen ableiten
17.5 Eigene Steuerelemente entwerfen
18 Programmiertechniken
18.1 Drag
18.1.1 Ablauf der Operation
18.1.2 Start der Operation
18.1.3 Ereignisse des Empfängers
18.1.4 Programmbeispiele
18.2 API-Aufrufe mit PInvoke
18.2.1 Das Attribut DllImport
18.2.2 Datentypen von API-Funktionen
18.3 Windows-Dienstanwendungen entwickeln
18.3.1 »Windows-Dienst«-Projekte in der Entwicklungsumgebung
18.3.2 Methoden eines Dienstes
18.3.3 Eigenschaften eines Dienstes
18.3.4 Installation eines Windows-Dienstes
18.3.5 Das Beispielprogramm FileWatchService
18.3.6 Dienste mittels Programmcode steuern
18.4 Die Zwischenablage
18.4.1 Speichern und Abrufen von Daten
18.4.2 Weitere Zugriffsmethoden
18.4.3 Mehrere Datenformate gleichzeitig
18.4.4 Eigene Datenformate schreiben
18.4.5 Leeren der Zwischenablage
18.4.6 Beispielprogramm Menü »Bearbeiten«
19 WPF – Grundlagen
19.1 Merkmale einer WPF-Anwendung
19.2 XML
19.2.1 Tags
19.2.2 Inhalt
19.2.3 Attribute
19.2.4 Wurzel
19.2.5 Namensräume
19.2.6 Kommentare
19.2.7 Entitäten
19.2.8 Zusammenfassung
19.3 XAML
19.3.1 Standardnamensräume
19.3.2 Zusätzliche Namensräume
19.3.3 Tags
19.3.4 Attribute
19.3.5 Konvertierungen
19.3.6 Indirektion und Markup-Erweiterungen
19.3.7 Verbundene Attribute
19.3.8 Code Behind
19.3.9 Schlüsselwörter
19.4 WPF-Anwendungen
19.4.1 Erstes Fenster
19.4.2 Button
19.4.3 Browseranwendung
19.5 Dateien einer WPF-Anwendung
19.5.1 Window1.xaml
19.5.2 Window1.xaml.vb
19.5.3 Application.xaml
19.5.4 Application.xaml.vb
19.5.5 Window1.baml und Window1.g.vb
19.5.6 MyWpfExtension.vb
20 Layoutcontainer
20.1 Containertypen
20.2 Canvas
20.3 StackPanel
20.4 WrapPanel
20.5 DockPanel
20.6 UniformGrid
20.7 Grid
20.8 Positionierung von Steuerelementen
20.8.1 Position mit Top, Bottom, Right und Left
20.8.2 Außenränder mit Margin
20.8.3 Innenränder mit Padding
20.9 Verschachtelung
21 WPF-Steuerelemente
21.1 Ereignisse programmieren
21.1.1 Weiterleiten von Ereignissen
21.1.2 Event Bubbling
21.1.3 Event Tunneling
21.1.4 Weiterleitung abbrechen
21.1.5 Reihenfolge der Routed Events
21.2 Die Basisklasse Control
21.3 Familie der Buttons
21.3.1 Button
21.3.2 RepeatButton
21.3.3 ToggleButton
21.4 Textboxen
21.4.1 TextBox
21.4.2 PasswordBox
21.5 Label
21.6 Auswahlelemente
21.6.1 CheckBox
21.6.2 RadioButton
21.7 Listen
21.7.1 ListBox
21.7.2 ComboBox
21.8 Menüleiste
21.8.1 Gestaltung der Menüelemente
21.8.2 Symbole anzeigen
21.8.3 Tastenkürzel
21.8.4 Selektierbare Menüelemente
21.9 Kontextmenü
21.10 Symbolleisten
21.10.1 Positionieren mit der Komponente ToolBarTray
21.11 Statusleiste
21.12 Bilder mit Image
21.12.1 Grafik zur Laufzeit laden
22 Konzepte von WPF
22.1 Abhängige und angehängte Eigenschaften
22.1.1 Abhängige Eigenschaften
22.1.2 Angehängte Eigenschaften
22.2 Ressourcen
22.2.1 Definition
22.2.2 Zeitpunkt der Wertbestimmung
22.2.3 Abrufen von Systemressourcen
22.3 Stile
22.3.1 Einfache Stile
22.3.2 Typisierte Stile
22.4 Trigger
22.4.1 Eigenschaftstrigger
22.4.2 Ereignistrigger
22.4.3 Datentrigger
22.5 Kommandos
22.5.1 Vordefiniert
22.5.2 Beispielanwendung
22.5.3 Kommando-Ziel
22.5.4 Kommandos an Ereignisse binden
22.5.5 Kommandos programmieren
22.6 Datenbindung
22.6.1 Einfache Datenbindung
22.7 Bindungsarten
22.7.1 Aktualisierung der Quelle
22.7.2 Datenbindungsquellen
22.7.3 Auflistungen anbinden
23 Datenbankverbindung mit ADO.NET
23.1 ADO.NET-Provider
23.2 Verbindungen mit dem Datenprovider
23.2.1 DbConnection-Objekt
23.2.2 Die Verbindungszeichenfolge
23.2.3 Die Verbindung zu einer bestimmten SQL Server-Instanz
23.2.4 Änderung des Passworts bei der SQL Server-Authentifizierung
23.2.5 Verbindungszeichenfolgen mit DbConnectionStringBuilder
23.2.6 Öffnen und Schließen einer Verbindung
23.2.7 Testrahmen
23.3 Verbindungspooling
23.3.1 Beispiel für das Verbindungspooling
23.3.2 Verbindungspooling deaktivieren
23.3.3 Verbindungspoolgröße manipulieren
23.3.4 Freigabe gepoolter Verbindungen
23.4 Ereignisse eines Connection-Objekts
23.4.1 StateChange
23.4.2 InfoMessage
23.5 Verbindungszeichenfolgen aus einer Konfigurationsdatei abrufen
23.6 Connection im Überblick
23.6.1 Vererbungshierarchie
23.6.2 Ereignisse eines SqlConnection-Objekts
23.6.3 Eigenschaften eines SqlConnection-Objekts
23.6.4 Methoden des Connection-Objekts
23.7 Verbindungen mit dem OleDb-Datenprovider
23.7.1 Verbindungsaufbau zu einer SQL Server-Datenbank
23.7.2 Verbindungsaufbau zu einer Access-Datenbank
23.7.3 Authentifizierung mit dem OleDb-Provider
24 Datenbankabfragen mit ADO.NET
24.1 DbCommand
24.1.1 Ein DbCommand-Objekt erzeugen
24.1.2 Ausführen des DbCommand-Objekts
24.1.3 Begrenzung der Abfragezeit durch CommandTimeout
24.1.4 Aktionsabfragen absetzen
24.1.5 Abfragen mit einem Einzelergebnis
24.2 SqlDataReader
24.2.1 Das SQL-Kommando SELECT
24.2.2 Datensätze einlesen
24.2.3 DataReader schließen
24.2.4 MARS (Multiple Active Resultsets)
24.2.5 Batch-Abfragen mit NextResult durchlaufen
24.2.6 Informationen über eine Tabelle
24.3 Parametrisierte Abfragen
24.3.1 SqlClient-Datenprovider
24.3.2 SqlParameter
24.3.3 OleDb-Datenprovider
24.4 Asynchrone Abfragen
24.4.1 Polling
24.4.2 Bereitstellen einer Rückrufmethode
24.5 Gespeicherte Prozeduren (Stored Procedures)
24.5.1 Gespeicherte Prozeduren in Visual Studio 2008 erstellen
24.5.2 Gespeicherte Prozeduren aufrufen
24.5.3 Komplexe gespeicherte Prozeduren
25 DataAdapter
25.1 Was ist ein DataAdapter?
25.1.1 Ein Programmbeispiel
25.2 Initialisierung
25.2.1 Konstruktoren
25.2.2 Die Eigenschaft SelectCommand
25.3 Den lokalen Datenspeicher füllen
25.3.1 Verbindungen öffnen und schließen
25.3.2 Doppelter Aufruf der Fill-Methode
25.3.3 Mehrere DataAdapter-Objekte aufrufen
25.3.4 Der Spalten- und der Tabellenbezeichner einer DataTable
25.3.5 Paging mit der Fill-Methode
25.4 Tabellenzuordnung mit TableMappings
25.4.1 Spaltenzuordnungen in einem DataSet
25.4.2 Spaltenzuordnungen einer DataTable
25.4.3 Die Eigenschaft MissingMappingAction des DataAdapters
25.5 Das Ereignis FillError des DataAdapters
26 Offline mit DataSet
26.1 Das DataSet-Objekt verwenden
26.1.1 Ein DataSet-Objekt erzeugen
26.1.2 Anatomie einer DataTable
26.1.3 Zugriff auf eine Tabelle im DataSet
26.1.4 Zugriff auf die Ergebnisliste
26.1.5 Dateninformationen in eine XML-Datei schreiben
26.2 DataSet mit Schemainformationen
26.2.1 Schemainformationen bereitstellen
26.2.2 Gültigkeitsprüfung in einer DataColumn
26.2.3 Constraints-Klassen einer DataTable
26.2.4 Tabellenschema durch Programmcode
26.2.5 Tabellenschema durch DataAdapter
26.2.6 Tabellenschema aus einer XML-Datei
26.3 Änderung einer Tabelle
26.3.1 Editieren einer Datenzeile
26.3.2 Löschen einer Datenzeile
26.3.3 Neue Datenzeile hinzufügen
26.4 Änderung einer Datenzeile
26.4.1 Aktualisierungszustand
26.4.2 Ursprünglicher und aktualisierter Inhalt
26.4.3 Zeilenstatus manuell steuern
26.5 Mit mehreren Tabellen arbeiten
26.5.1 JOIN-Abfragen
26.5.2 Mehrere Tabellen in einem DataSet
26.5.3 Tabellenbeziehungen erzeugen
26.5.4 DataRelations und Einschränkungen
26.5.5 In Beziehung stehende Daten suchen
26.5.6 Ergänzung zum Speichern von Schemainformationen in einer XML–Schemadatei
26.6 Suchen und Filtern
26.6.1 Find
26.6.2 Select
26.7 Objekte vom Typ DataView
26.7.1 Initialisierung
26.7.2 Zugriff auf die Datenzeilen
26.7.3 Spalten durchsuchen
26.7.4 Mehrdeutige Suchergebnisse
26.7.5 Datenfilter
26.7.6 Statusfilter
26.7.7 Änderungen
26.7.8 DataView in DataTable umwandeln
27 Datenbanken aktualisieren
27.1 Aktualisieren mit CommandBuilder
27.1.1 Parallelitätskonflikt
27.1.2 Aktualisierungsbefehle des DbCommandBuilders
27.1.3 Aktualisierungsoptionen des DbCommandBuilders
27.1.4 Vor- und Nachteile des DbCommandBuilders
27.2 Manuell gesteuerte Aktualisierungen
27.2.1 Manuelles Aktualisieren mit dem DataAdapter
27.2.2 Aktualisieren mit ExecuteNonQuery
27.3 Benutzer über fehlgeschlagene Aktualisierungen informieren
27.4 Konfliktverursachende Datenzeilen bei der Datenbank abfragen
27.5 DataSet mit der Datenbank synchronisieren
27.5.1 UpdatedRowSource in DbCommand
27.6 Hierarchische Änderungen an die Datenbank übermitteln
27.6.1 Datenbank auslesen
27.6.2 Änderung
27.6.3 Bestellung einfügen
27.6.4 Bestelldetails einfügen
27.6.5 Wiederherstellen der Datenbank
28 Stark typisierte DataSets
28.1 Erzeugung
28.1.1 Visual Studio Designer
28.1.2 Das Kommandozeilentool XSD.exe
28.2 Anatomie
28.2.1 Grobstruktur: Datentypen
28.2.2 Das typisierte DataSet
28.2.3 TableAdapter
28.2.4 Typisierte Tabelle
28.2.5 Typisierte Zeile
28.3 Datenzugriff
28.3.1 Datenzeilen ausgeben
28.3.2 Datenzeilen hinzufügen
28.3.3 Datenzeilen bearbeiten
28.3.4 Datenzeilen suchen
28.3.5 Spalten mit Null-Wert
28.3.6 Tabellenbeziehungen
28.4 Ein typisiertes DataSet manuell erzeugen
28.4.1 DataTable erzeugen
28.4.2 Spalten hinzufügen
28.4.3 Tabellenbeziehungen erstellen
28.5 TableAdapter erzeugen
28.5.1 Visual Studio Assistent
28.6 TableAdapter verwenden
28.6.1 Datenbeschaffung mit Fill
28.6.2 Datenbeschaffung mit GetData
28.6.3 Aktualisierung mit Update
28.6.4 Aktualisieren mit UpdateAll
28.6.5 Direkte Aktualisierung der Datenbank
28.6.6 TableAdapter mit mehreren Abfragen
28.6.7 TableAdapter ändern
28.7 Fazit: Typisierte oder nicht typisierte DataSets?
A Anhang: Einige Übersichten
A.1 Erweiterungsmethoden
A.2 Generische Typen
A.3 Typisiertes DataSet
Ihre Meinung
Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.
