Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
1 Einführung
2 Grundlagen der Sprachsyntax
3 Klassendesign
4 Weitere Datentypen
5 Multithreading
6 Collections und LINQ
7 Eingabe und Ausgabe
8 Anwendungen: Struktur und Installation
9 Code erstellen und debuggen
10 Einige Basisklassen
11 Windows-Anwendungen erstellen
12 Die wichtigsten Steuerelemente
13 Tastatur- und Mausereignisse
14 MDI-Anwendungen
15 Grafiken mit GDI+
16 Drucken
17 Entwickeln von Steuerelementen
18 Programmiertechniken
19 WPF – Grundlagen
20 Layoutcontainer
21 WPF-Steuerelemente
22 Konzepte von WPF
23 Datenbankverbindung mit ADO.NET
24 Datenbankabfragen mit ADO.NET
25 DataAdapter
26 Offline mit DataSet
27 Datenbanken aktualisieren
28 Stark typisierte DataSets
A Anhang: Einige Übersichten
Stichwort

Jetzt Buch bestellen
Ihre Meinung?

Spacer
<< zurück
Visual Basic 2008 von Andreas Kuehnel, Stephan Leibbrandt
Das umfassende Handbuch
Buch: Visual Basic 2008

Visual Basic 2008
3., aktualisierte und erweiterte Auflage, geb., mit DVD
1.323 S., 49,90 Euro
Rheinwerk Computing
ISBN 978-3-8362-1171-0
Pfeil 11 Windows-Anwendungen erstellen
Pfeil 11.1 Entwicklungsumgebung
Pfeil 11.2 Eine erste Windows-Anwendung
Pfeil 11.3 Das Codegerüst einer Windows-Anwendung
Pfeil 11.3.1 Einstellungen
Pfeil 11.3.2 Automatisch generierter Startcode
Pfeil 11.3.3 Nachrichtenschleife
Pfeil 11.3.4 Dateien *.vb und *.Designer.vb
Pfeil 11.4 Ereignisse grafischer Windows-Komponenten
Pfeil 11.4.1 Syntax und Nomenklatur
Pfeil 11.4.2 Ereignisse mit Ereignisdaten
Pfeil 11.4.3 Ereignisbehandlung in Visual Studio
Pfeil 11.4.4 Ereignisbehandlung mit OnEreignis-Methoden
Pfeil 11.5 Die Basisklassen einer Form
Pfeil 11.5.1 Control
Pfeil 11.5.2 ScrollableControl
Pfeil 11.5.3 ContainerControl
Pfeil 11.6 Eigenschaften einer Form
Pfeil 11.6.1 Rahmendarstellung
Pfeil 11.6.2 Formspezifisches Symbol
Pfeil 11.6.3 Schaltflächen der Titelleiste
Pfeil 11.6.4 Transparenz
Pfeil 11.6.5 Immer obenauf
Pfeil 11.6.6 Mauszeiger verändern
Pfeil 11.6.7 Farbe (Color)
Pfeil 11.6.8 Schriftart (Font)
Pfeil 11.6.9 Abmessungen einer Form
Pfeil 11.6.10 Position eines Fensters
Pfeil 11.6.11 Anzeigezustand eines Fensters
Pfeil 11.6.12 Arbeitsfläche des Fensters (Clientbereich)
Pfeil 11.6.13 Fokussierreihenfolge
Pfeil 11.6.14 Standardschaltflächen eines Fensters
Pfeil 11.6.15 Unterelemente (ControlsCollection)
Pfeil 11.6.16 Eigenschaften des Form-Objekts
Pfeil 11.7 Ereignisse einer Form
Pfeil 11.7.1 Erzeugen eines Fensters
Pfeil 11.7.2 Größenänderung einer Form
Pfeil 11.7.3 Schließen eines Fensters
Pfeil 11.8 Anwendungen mit mehreren Fenstern
Pfeil 11.8.1 Neue Formulare hinzufügen
Pfeil 11.8.2 Lebenszyklus von Formularen
Pfeil 11.8.3 Mehrere Fenster verwalten
Pfeil 11.8.4 Begrüßungsfenster (Splash)
Pfeil 11.9 Modale Dialogfenster
Pfeil 11.9.1 Layout eines Dialogfensters
Pfeil 11.9.2 Rückgabewert
Pfeil 11.9.3 Eine Form modal öffnen
Pfeil 11.10 Meldungsfenster mit MessageBox
Pfeil 11.10.1 Anzeige mit Show
Pfeil 11.10.2 Rückgabewert der Meldungsfenster
Pfeil 11.11 Die Klasse Application
Pfeil 11.11.1 Die Datei AssemblyInfo.vb
Pfeil 11.11.2 Wartende Ereignisse abrufen (DoEvents)
Pfeil 11.11.3 Eigenschaften und Methoden


Rheinwerk Computing - Zum Seitenanfang

11.6 Eigenschaften einer Form Zur nächsten ÜberschriftZur vorigen Überschrift

Viele Eigenschaften ändern nicht nur das Aussehen einer Form, sondern beeinflussen auch deren Verhalten zur Laufzeit. In den folgenden Abschnitten möchte ich Ihnen die wichtigsten Eigenschaften vorstellen. Hier alle zu erwähnen oder gar detailliert zu erläutern, würde den Rahmen dieses Kapitels sprengen. Die fehlenden Eigenschaften werden Sie sich einfach mittels des Eigenschaftsfensters erschließen können.

Eigenschaften, die sich sofort beim Erzeugen eines Fensters auf die Ausgabe der Form auswirken sollen, stellen Sie am besten im Eigenschaftsfenster ein. Manche Eigenschaften möchte man aber zur Laufzeit ändern, beispielsweise aufgrund geänderter Umgebungsbedingungen oder um die Interaktion zwischen Form und Anwender zu beeinflussen. Dazu kann jede nicht schreibgeschützte Eigenschaft auch mittels Programmcode verändert werden.


Rheinwerk Computing - Zum Seitenanfang

11.6.1 Rahmendarstellung Zur nächsten ÜberschriftZur vorigen Überschrift

Zu den spezifischen Eigenschaften einer Form gehört FormBorderStyle. Sie legt fest, wie der Rahmen zur Laufzeit dargestellt wird, beispielsweise ob er eine fixe Größe hat oder vom Anwender verändert werden kann. Die Eigenschaft ist vom gleichnamigen Typ der Aufzählung FormBorderStyle, die zum Namespace System.Windows.Forms gehört. Diese Aufzählung stellt die in der Tabelle 11.5 aufgeführten Konstanten bereit.


Tabelle 11.5 Einstellungen der Eigenschaft »FormBorderStyle«

Konstante Beschreibung

Fixed3D

Dreidimensionaler Rahmen für eine Form fester Größe

FixedDialog

Rahmen eines Dialogs fester Größe ohne Systemmenüfeld

FixedSingle

Rahmen eines Dialogs fester Größe mit Systemmenüfeld

FixedToolWindow

Toolfenster mit schmaler Titelleiste, ohne Min/Max-Schaltflächen sowie ohne Systemmenüfeld für eine Form fester Größe

None

Die Form zeigt weder Rahmen noch Titelleiste

Sizable

Standardrahmen für eine in der Größe veränderbare Form

SizableToolWindow

In der Größe veränderbares Toolfenster mit schmaler Titelleiste, ohne Min/Max-Schaltflächen sowie ohne Systemmenüfeld.



Rheinwerk Computing - Zum Seitenanfang

11.6.2 Formspezifisches Symbol Zur nächsten ÜberschriftZur vorigen Überschrift

Was man nicht versäumen sollte, ist die Festlegung eines formspezifischen Symbols in der linken Ecke der Titelleiste, denn das standardmäßige sieht nicht besonders professionell aus. Dazu weisen Sie der Eigenschaft Icon das gewünschte Symbol zu. Sie können dazu auf Icons zurückgreifen, die mit Visual Studio 2008 als komprimierte Datei (VS2008ImageLibrary.zip) ausgeliefert werden. Die Datei ist im Ordner \Programme\Microsoft Visual Studio 9.0\Common7\VS2008ImageLibrary\1031 zu finden sind (vorausgesetzt, Sie haben bei der Installation des Visual Studio 2008 den Standardinstallationspfad übernommen und nicht durch einen eigenen ersetzt).


Rheinwerk Computing - Zum Seitenanfang

11.6.3 Schaltflächen der Titelleiste Zur nächsten ÜberschriftZur vorigen Überschrift

Standardmäßig werden am rechten Ende der Titelleiste drei Schaltflächen angeboten, um die Form zu minimieren, zu maximieren oder zu schließen. Manchmal ist es nicht erwünscht, dass zur Laufzeit ein Fenster bildschirmfüllend angezeigt oder minimiert in die Taskleiste gelegt wird, beispielsweise bei Dialogfenstern. Mit den beiden Eigenschaften MinimizeBox und MaximizeBox kann die Anzeige der beiden Schaltflächen beeinflusst werden.

Diese Eigenschaften können entweder True oder False sein. Der Standard ist True und zeigt die entsprechende Schaltfläche aktiviert in der Titelleiste. Mit False kann jede der beiden Schaltflächen einzeln deaktiviert werden. Eine Voraussetzung muss aber noch erfüllt sein, um eine Form auch tatsächlich minimiert in die Taskleiste legen zu können: Die Eigenschaft ShownInTaskbar der Form muss auf True eingestellt sein. Das ist auch gleichzeitig der Standard. False bewirkt zwar ebenfalls das Minimieren der Form, das Symbol für die Form wird dann jedoch oberhalb der Taskleiste abgelegt.

Ein etwas drastischeres Verhalten zeigt die Eigenschaft ControlBox. Ist sie False, werden nicht nur die drei Schaltflächen am rechten Ende der Titelleiste ausgeblendet, sondern darüber hinaus auch das Systemmenüfeld der Form. Um die Form zu schließen, sollten Sie dem Anwender dann unbedingt eine eigene Schliessen-Schaltfläche zur Verfügung stellen.


Rheinwerk Computing - Zum Seitenanfang

11.6.4 Transparenz Zur nächsten ÜberschriftZur vorigen Überschrift

Eine nette Spielerei und in der Praxis kaum von größerem Nutzen ist die Einstellung der Transparenz mit Opacity, die zwischen 0 % (vollständige Transparenz: das Fenster einschließlich aller Komponenten ist unsichtbar) stufenlos bis 100 % (deckend) eingestellt werden kann. Immerhin scheinen sich in den jüngsten Microsoft-Produkten immer mehr auch solche visuellen Darstellungen zu etablieren. Haben Sie beispielsweise Outlook 2003 installiert, wird in einem halb transparenten Fenster der Eingang einer neuen Mail signalisiert.

Sehr ähnlich funktioniert auch TransparencyKey. Dieser Eigenschaft übergeben Sie eine Farbe vom Typ Color. Jedes Pixel des Fensters oder einer seiner Komponenten, das exakt dieser Farbe entspricht, ist dann transparent. Sollte die Maus zufälligerweise auf ein transparentes Pixel treffen, werden die Mausereignisse nicht ausgelöst.


Hinweis
In Kombination mit FormBorderStyle = None können Sie fensterlose Anwendungen erzeugen, indem Sie als Wert für TransparencyKey die Hintergrundfarbe der Form wählen. Durch Definition der MouseMove-Ereignisse der Steuerlemente kann die Anwendung verschiebbar gemacht werden.



Rheinwerk Computing - Zum Seitenanfang

11.6.5 Immer obenauf Zur nächsten ÜberschriftZur vorigen Überschrift

Es gibt Fenster, die auch dann als oberstes Fenster einer Anwendung angezeigt werden, wenn sie nicht aktiviert sind. Typische Vertreter sind die Dialoge Suchen und Ersetzen, die in sehr vielen Anwendungen zu finden sind. Mit der Einstellung True der Eigenschaft TopMost erzielen Sie dieses Verhalten.


Rheinwerk Computing - Zum Seitenanfang

11.6.6 Mauszeiger verändern Zur nächsten ÜberschriftZur vorigen Überschrift

Die Eigenschaft Cursor legt das Aussehen des Mauszeigers fest, wenn sich dieser über der Form oder einem Steuerelement bewegt. Mit

Me.Cursor = Cursors.WaitCursor

wird bei einer lang andauernden Operation der Mauszeiger als Sanduhr angezeigt. Damit signalisieren Sie dem Anwender, dass das System beschäftigt ist. Mit

Me.Cursor = Cursors.Default

schalten Sie nach der Beendigung der Operation wieder in die Standarddarstellung zurück.

Eine Alternative bietet die Eigenschaft UseWaitCursor. Dieser übergeben Sie True, um mit der Sanduhr einen länger dauernden Vorgang anzuzeigen, und setzen sie nach Abschluss der Operation auf False zurück, also:

Me.UseWaitCursor = True ' zeigt die Sanduhr an 
...

Me.UseWaitCursor = False ' schaltet den Standardcursor ein

Die Klasse Cursors definiert die Mausdarstellungen als statische Eigenschaften, die der Eigenschaft Cursor zugewiesen werden können. Die Tabelle 11.6 gibt nur einen kleinen Auszug aller Möglichkeiten wieder.


Tabelle 11.6 Einstellungen der Eigenschaft »Cursor« (Auszug)

Wert in Cursors Beschreibung

Arrow

Der Mauszeiger wird als Pfeil dargestellt.

Cross

Der Mauszeiger wird als Fadenkreuz dargestellt.

Default

Der Mauszeiger wird als Pfeil dargestellt (entspricht Arrow).

WaitCursor

Der Mauszeiger wird als Sanduhr dargestellt.



Rheinwerk Computing - Zum Seitenanfang

11.6.7 Farbe (Color) Zur nächsten ÜberschriftZur vorigen Überschrift

Farbeigenschaften wie BackColor zur Einstellung der Hintergrundfarbe und ForeColor für die Vordergrundfarbe (das entspricht der Zeichen- bzw. Schriftfarbe) sind vom Typ der Struktur Color. im Namensraum System.Drawing. Ein Blick in die Dokumentation dieser Struktur verrät uns, dass Color nur über einen parameterlosen Standardkonstruktor verfügt:

Dim myColor As Color = New Color()

Diesen Konstruktor einzusetzen, ist wenig sinnvoll, weil er nur ein transparentes Schwarz beschreibt, das als »leere« Farbe wahrgenommen wird. Sinnvoller ist es, auf eine der vordefinierten Farben zuzugreifen, die als statische, schreibgeschützte Eigenschaften veröffentlicht werden. Die Tabelle 11.7 enthält exemplarisch einen Auszug aus dieser Liste.


Tabelle 11.7 Farbkonstanten der Struktur »Color« (Auszug)

Konstante Beschreibung

Black

Schwarz

Blue

Blau

Green

Grün

Red

Rot

White

Weiß

Yellow

Gelb


Soll die Form oder eine Komponente (soweit diese auch die Eigenschaften BackColor bzw. ForeColor aufweist) zur Laufzeit die Farbe wechseln, genügt eine einfache Anweisung wie:

Me.BackColor = Color.Blue

Die Einstellungen BackColor und ForeColor werden von einigen Steuerelementen der Form per Vorgabe übernommen. Soll die Vorder- oder Hintergrundfarbe des Controls davon abweichen, müssen Sie das in der gleichnamigen Eigenschaft des Steuerelements einstellen.


Rheinwerk Computing - Zum Seitenanfang

11.6.8 Schriftart (Font) Zur nächsten ÜberschriftZur vorigen Überschrift

Die Eigenschaft Font, die vom gleichnamigen Typ Font ist, wirkt sich auf die Darstellung von Text aus, der im Arbeitsbereich einer Form ausgegeben wird. Außerdem wird diese Eigenschaft von allen untergeordneten Controls der Form übernommen. Font ändert jedoch nicht die Schriftdarstellung in der Titelleiste.


Hinweis
Änderungen der Schriftgröße skalieren die Fenstergröße, wenn die Eigenschaft AutoScaleMode den Wert AutoScaleMode.Font hat.


Die Einstellung im Eigenschaftsfenster ist leicht. Etwas schwieriger wird es, wenn Sie die Font-Eigenschaft mithilfe eines Programms ändern müssen. Um einen vom Standard abweichenden Typ anzugeben, muss dazu ein neues Font-Objekt erzeugt werden, das von Anfang an die gewünschten Eigenschaften aufweist – beispielsweise Kursivschreibweise. Wegen der vielen Kombinationsmöglichkeiten bietet die Klasse Font insgesamt 13 öffentliche Konstruktoren an, die den unterschiedlichen Ansprüchen genügen. Drei möchte ich Ihnen an dieser Stelle exemplarisch vorstellen:


Public Sub New(prototype As Font, newStyle As FontStyle) 
Public Sub New(familyName As String, emSize As Single) 
Public Sub New(familyName As String, emSize As Single, style As FontStyle)

Sehen wir uns den ersten Konstruktor an, dem im ersten Parameter die Referenz auf ein Font-Objekt übergeben wird. Dabei könnte es sich beispielsweise um die Rückgabe der Eigenschaft Font eines Objekts handeln. Im zweiten Parameter wird der Schriftstil festgelegt, der auf der Enumeration FontStyle basiert (siehe Tabelle 11.8).


Tabelle 11.8 Die Enumeration »FontStyle«

Konstante Beschreibung

Bold

Fett formatierter Text

Italic

Kursiv formatierter Text

Regular

Normaler Text

Strikeout

Durchgestrichener Text

Underline

Unterstrichener Text


Angenommen, wir wollen die aktuelle Schriftdarstellung auf der Arbeitsfläche einer Form, die mit frm referenziert wird, in eine fett formatierte Ausgabe ändern. Die Anweisung dazu sieht wie folgt aus:

frm.Font = New Font(frm.Font, FontStyle.Bold)

Wenn Sie in die .NET-Dokumentation schauen, werden Sie feststellen, dass die FontStyle-Enumeration über das Flags-Attribut verfügt und somit jede Konstante der Enumeration durch ein bestimmtes Bit beschrieben wird. Eine gegebene Schrift kann damit gleichzeitig mehrere der in FontStyle definierten Charakteristika aufweisen. Das ist auch richtig, denn zweifelsfrei kann eine Schrift sowohl kursiv als auch fett sein.

Soll eine Schrift mehrere Merkmale gleichzeitig aufweisen, müssen die einzelnen Enumerations-Mitglieder nur mit dem bitweisen OR-Operator verknüpft werden:

myForm.Font = New Font(myForm.Font, FontStyle.Bold Or FontStyle.Italic)

Die Schrift, die jetzt in myForm dargestellt wird, ist sowohl fett als auch kursiv. Schriftart und -größe entsprechen der ursprünglichen Schrift.

Interessant wird es, innerhalb einer Anweisung eine der Schrifteigenschaften zu invertieren, den Wert also genau umzukehren. Nehmen wir beispielsweise an, Sie möchten erreichen, dass eine Schrift, die aktuell fett angezeigt wird, in Normaldarstellung ausgegeben wird. Bold ist zwar eine Eigenschaft der Klasse Font (wie auch Italic, Strikeout und Underline), hat jedoch keinen set-Accessor und kann daher nicht direkt verändert werden. Der Weg zum Ziel führt nur über den Konstruktor der Font-Klasse:

frm.Font = new Font(frm.Font, frm.Font.Style Xor FontStyle.Bold)

Dem ersten Parameter wird hier die aktuelle Schrift übergeben. Um den zweiten mit dem richtigen Wert zu füttern, wird zunächst die augenblickliche FontStyle-Einstellung abgefragt. Mit dem XOR-Operator verknüpfen wir diesen Wert noch mit der Bitsequenz für die fette Schriftdarstellung: Das von FontStyle.Bold beschriebene Bit wird anschließend innerhalb der Bitsequenz FontStyle invertiert.


Rheinwerk Computing - Zum Seitenanfang

11.6.9 Abmessungen einer Form Zur nächsten ÜberschriftZur vorigen Überschrift

Die äußere Abmessung einer Form kann auf verschiedene Arten beschrieben werden:

  • Size
  • Height und Width

Size legt in einer Anweisung gleichzeitig die Breite und die Höhe des Fensters in Pixel fest. Diese Eigenschaft ist vom Typ der gleichnamigen Struktur Size. Übergibt man der Eigenschaft einen neuen Wert, bietet es sich an, einen passenden Konstruktor aufzurufen, z. B.:

Me.Size = New Size(600, 400)

Dieselbe Fenstergröße erzielen Sie, wenn den beiden Eigenschaften Width und Height die Größenangaben einzeln übergeben werden:

Me.Width = 600 
Me.Height = 400

Sie werden die Eigenschaften Width und Height nicht im Eigenschaftsfenster finden. Dennoch können Sie sie im Code manipulieren.

Größe einer Form begrenzen

Wollen Sie verhindern, dass der Anwender eine Form zur Laufzeit über ein bestimmtes Maß hinaus vergrößert oder verkleinert, stellen Sie die Eigenschaften MinimumSize und MaximumSize auf die gewünschten Grenzwerte ein.


Rheinwerk Computing - Zum Seitenanfang

11.6.10 Position eines Fensters Zur nächsten ÜberschriftZur vorigen Überschrift

Um ein Fenster an einer bestimmten Position des Bildschirms anzuzeigen, stehen mehrere Eigenschaften zur Verfügung:

  • StartPosition
  • Location
  • Left und Top

Die Position, die ein Fenster beim Programmstart auf dem Bildschirm einnimmt, wird mit der Eigenschaft StartPosition festgelegt. Dazu wird der Eigenschaft ein Wert aus der Enumeration FormStartPosition übergeben:


Tabelle 11.9 Die »FormStartPosition«-Enumeration

Konstante Beschreibung

CenterParent

Zentrierung des Formulars innerhalb des übergeordneten Formulars.

CenterScreen

Das Formular wird auf dem Bildschirm zentriert angezeigt.

Manual

Die Position des Formulars wird durch die Einstellung der Eigenschaft Location festgelegt.

WindowsDefaultBounds

Position und Größe werden von Windows festgelegt. Die Werte Width/Height bzw. Size der Form werden ignoriert.

WindowsDefaultLocation

Das Formular wird an der Windows-Standardposition positioniert. Die Größe der Form wird durch Width/Height bzw. Size festgelegt. Diese Einstellung ist der Standard.


Zu Beginn einer Windows-Sitzung wird das erste Programmfenster in der linken oberen Ecke des Bildschirms positioniert, jedes weitere Fenster erscheint, um einen bestimmten Betrag versetzt, weiter rechts unten. Das ist die Vorgabe, wenn nichts anderes bestimmt wird. Dieses Positionierungsverhalten wird durch die beiden Einstellungen WindowsDefaultBounds und WindowsDefaultLocation beschrieben. Beide unterscheiden sich nur darin, in welcher Größe ein Formular nach dem Start angezeigt wird. Wählen Sie WindowsDefaultBounds, werden alle weiteren Angaben bezüglich Position und Größe ignoriert; mit WindowsDefaultLocation dagegen wird die Größe der Form aus den Einstellungen der Eigenschaften Width und Height berücksichtigt.

Öffnen wir ein Fenster aus einem anderen heraus – es könnte sich zum Beispiel um ein Dialogfenster handeln –, ist insbesondere die Einstellung CenterParent interessant: Der Dialog wird genau mittig über dem aufrufenden positioniert. CenterScreen positioniert eine Form in der Mitte des Bildschirms.

Legen Sie Manual fest, können Sie sowohl die Größe als auch die Position nach eigenem Ermessen festlegen. Location beschreibt dazu die x- und y-Position der Form nach dem Start. Die Angaben sind in Pixel und beziehen sich auf die Position der linken oberen Ecke der Form bezüglich des Ursprungspunktes des Bildschirms (0, 0). Dieser befindet sich in der linken oberen Ecke des Bildschirms.

Left legt den Abstand zwischen dem linken Rand des Fensters und des Bildschirms fest, Top den Abstand zum oberen Rand. Auch diese Eigenschaften werden nicht im Eigenschaftsfenster angeboten, obwohl beide öffentlich sind. Darüber hinaus gibt es noch zwei ähnliche, positionsbeschreibende Eigenschaften, Right und Bottom, die allerdings schreibgeschützt sind.

Möchten Sie sowohl die Größe als auch die Position eines Fensters gleichzeitig verändern, können Sie entweder mit der Eigenschaft Bounds oder mit der Eigenschaft DesktopBounds eine einzeilige Anweisung codieren. Beide sind vom Typ Rectangle und definieren das Fenster als Rechteck einer vorgegebenen Größe an einer bestimmten Position. Mit

Me.DesktopBounds = New Rectangle(100, 120, 600, 450)

wird beispielsweise ein Fenster mit den Abmessungen 600 × 450 Pixel beschrieben, das zum linken Rand des Bildschirms einen Abstand von 100 Pixel aufweist und zum oberen Rand einen Abstand von 120 Pixel.

Wollen Sie die Größe oder die Position eines Fensters ändern, müssen Sie nicht unbedingt Eigenschaftswerte neu festlegen. Es bieten sich hierzu auch die Methoden SetDesktop-Location und SetDesktopBounds an, die dasselbe bewirken.


Rheinwerk Computing - Zum Seitenanfang

11.6.11 Anzeigezustand eines Fensters Zur nächsten ÜberschriftZur vorigen Überschrift

Normalerweise ist die Größe eines Fensters nach dem Öffnen durch die Eigenschaft Size festgelegt. Darüber hinaus können Sie aber auch schon beim Öffnen einer Form oder auch später zur Laufzeit einen anderen Zustand festlegen. Zur Auswahl stehen die maximierte und die minimierte Anzeige, festgelegt in der Eigenschaft WindowState, die einen der drei Werte in Tabelle 11.10 aus der Enumeration FormWindowState annehmen kann.


Tabelle 11.10 Die »FormWindowState«-Enumeration

Konstante Beschreibung

Maximized

Das Fenster wird maximiert angezeigt.

Minimized

Das Fenster wird minimiert angezeigt.

Normal

Das Fenster wird in seiner Standardgröße angezeigt.



Rheinwerk Computing - Zum Seitenanfang

11.6.12 Arbeitsfläche des Fensters (Clientbereich) Zur nächsten ÜberschriftZur vorigen Überschrift

Die weiter oben beschriebenen Eigenschaften zur Festlegung der Größe eines Formulars beziehen sich auf die Außenabmessungen, also einschließlich Rand und Titelleiste. Fügen Sie einer Form Steuerelemente hinzu oder rufen Sie eine grafische Methode auf, um in die Form zu zeichnen, spielen die Außenabmessungen keine Rolle, denn diese Elemente können nur den standardmäßig grauen Arbeitsbereich der Form für sich in Anspruch nehmen. Dieser wird durch die Eigenschaft ClientSize beschrieben und berücksichtigt weder den Außenrahmen noch die Titelleiste. Die Eigenschaft ist ebenfalls vom Typ Size, der die Breite und die Höhe über Width und Height beschreibt. Wird zur Laufzeit der Anwendung der Eigenschaft ClientSize ein anderer Wert zugewiesen, passen sich die Außenabmessungen der Form an die neue Vorgabe an, weil Rahmen und Titelleiste immer konstant sind.


Rheinwerk Computing - Zum Seitenanfang

11.6.13 Fokussierreihenfolge Zur nächsten ÜberschriftZur vorigen Überschrift

Alle fokussierbaren Steuerelemente einer Form können mit der Taste Tabulator -Taste der Reihe nach aktiviert werden. Nach dem Öffnen und Anzeigen eines Formulars sollten zuerst die Steuerelemente aktiviert werden, die eine Eingabe vom Anwender erwarten, anschließend die Schaltflächen. Innerhalb dieser beiden Gruppen ist die Fokussierreihenfolge konventionsgemäß zuerst von links nach rechts, danach von oben nach unten. Das gilt natürlich nicht nur für modale Dialoge, auch alle anderen Fenster sollten sich daran halten.

Mit der Eigenschaft TabIndex der Steuerelemente können wir die Fokussierreihenfolge in einer Form vorschreiben. Dabei erhält das Element zuerst den Fokus, dessen TabIndex-Eigenschaft den Wert 0 hat, danach wird das Steuerelement mit dem Wert 1 fokussiert usw. TabIndex wird in der Reihenfolge vergeben, in der die Controls der Form hinzugefügt werden. Sie können die Werte im Eigenschaftsfenster der Steuerelemente beliebig anpassen.


Rheinwerk Computing - Zum Seitenanfang

11.6.14 Standardschaltflächen eines Fensters Zur nächsten ÜberschriftZur vorigen Überschrift

Bei vielen Fenstern kommt der Taste Enter -Taste (Eingabetaste) eine besondere Bedeutung zu. Ist eine Schaltfläche fokussiert und wird die Eingabetaste gedrückt, wird das Click-Ereignis der fokussierten Schaltfläche ausgelöst. Wird die Taste Enter -Taste gedrückt, während beispielsweise eine Textbox den Fokus hat, reagieren viele Formulare so, als sei die OK-Schaltfläche angeklickt worden.

Um eine bestimmte Schaltfläche zur Standardschaltfläche eines Formulars zu erklären, veröffentlicht die Klasse Form die Eigenschaft AcceptButton. Wollen wir die OK-Schaltfläche zur Standardschaltfläche unseres modalen Dialogs machen, muss die Anweisung so lauten:

Me.AcceptButton = btnOK

Ein ähnliches Verhalten zeigen Formulare, wenn die Taste Esc -Taste gedrückt wird. Allerdings entspricht das nicht dem Klicken auf die OK-Schaltfläche, sondern ist gleichbedeutend mit dem Klicken auf Abbrechen – das Formular wird geschlossen. Diesmal müssen wir der Eigenschaft CancelButton der Form die Referenz der formeigenen Abbrechen-Schaltfläche übergeben:

Me.CancelButton = btnAbbrechen

AcceptButton und CancelButton können auch im Eigenschaftsfenster eingestellt werden.


Rheinwerk Computing - Zum Seitenanfang

11.6.15 Unterelemente (ControlsCollection) Zur nächsten ÜberschriftZur vorigen Überschrift

Eine Form zählt zu den Komponenten, die ihrerseits weitere Komponenten (Steuerelemente) beherbergen können. Diese Fähigkeit haben unter anderem auch GroupBox und Panel. Alle diese Typen haben eines gemeinsam: die Eigenschaft Controls. Damit wird die Referenz auf eine Auflistung vom Typ Control.ControlCollection veröffentlicht, in der die vom Container beherbergten Steuerelemente verwaltet werden. Wir haben es hier zum ersten Mal mit einer verschachtelten Klassendefinition zu tun, denn die Klasse ControlCollection ist innerhalb der Klasse Control definiert.

Die Zugehörigkeit eines Steuerelements zu einer ControlCollection ist von elementarer Bedeutung. Nehmen wir an, Sie hätten einen Button wie folgt instanziiert:

Dim btn As New Button()

Die Frage, wo dieser angezeigt wird, ist einfach zu beantworten: gar nicht. Es fehlt der Schaltfläche noch eine Voraussetzung: Der Button muss einer ControlCollection hinzugefügt werden – entweder der der Form oder der eines anderen Containers. Damit ein Container wie beispielsweise eine GroupBox in einer Form angezeigt werden kann, muss die GroupBox ihrerseits Mitglied der ControlCollection der Form sein. So schließt sich der Kreis und kann infolgedessen zu einer tief verschachtelten Auflistungshierarchie führen.

Jede ControlCollection hat die üblichen Methoden einer indexbasierten Auflistung zum Hinzufügen, Löschen und für den Zugriff auf die Elemente (Add, Remove, Clear ...). Mit

Me.Controls.Add(btn)

wird die oben instanziierte Schaltfläche zur Steuerelementauflistung der Form hinzugefügt und zur Laufzeit wunschgemäß angezeigt.

Solange Sie den Forms-Designer benutzen, werden Sie ziemlich selten mit der ControlCollection in Berührung kommen, denn alles Notwendige erledigt das Visual Studio. Sie finden den entsprechenden Programmcode in der Methode InitializeComponent. Sie können die Auflistung aber jederzeit manipulieren, um zur Laufzeit dynamisch Steuerelemente zu erzeugen und danach ein- oder auszublenden – beispielsweise wenn die Form den aktuellen Bedingungen angepasst werden muss.


Rheinwerk Computing - Zum Seitenanfang

11.6.16 Eigenschaften des Form-Objekts topZur vorigen Überschrift

Sie haben jetzt einige Eigenschaften eines Form-Objekts kennengelernt. Es gibt noch eine große Zahl weiterer, auf die ich hier aus Platzgründen nicht weiter eingehen kann. Ich möchte Sie aber dazu ermuntern, mit der einen oder anderen Eigenschaft zu experimentieren. Das gilt im Übrigen auch für die Eigenschaften der Controls, denen wir uns später noch widmen werden. Meist können Sie aufgrund des gewählten Eigenschaftsnamens schon die Fähigkeiten erahnen, die sich dahinter verbergen.

Alle bisher besprochenen Eigenschaften finden Sie zusammenfassend in Tabelle 11.11. Sie werden im weiteren Verlauf dieses Buches noch einige weitere Eigenschaften kennenlernen, die in dieser Tabelle der Übersichtlichkeit wegen aber noch nicht enthalten sind.


Tabelle 11.11 Eigenschaften der Klasse »Form« (Auszug)

Eigenschaft Typ Beschreibung

BackColor

Color

Die Hintergrundfarbe der Form

Bounds

Rectangle

Die Größe und Position einer Form

ClientSize

Size

Die Größe des Clientbereichs einer Form

ControlBox

Boolean

Gibt an, ob in der Titelleiste das Systemmenüfeld angezeigt wird.

Controls

Control. ControlCollection

Auflistung aller Steuerelemente, die in einem Container (hier der Form) enthalten sind

Cursor

Cursor

Legt den Cursor fest.

DesktopBounds

Rectangle

Die Größe und Position der Form auf dem Windows-Desktop

Font

Font

Die Schrift für den Clientbereich und die untergeordneten Controls

ForeColor

Color

Die Vordergrundfarbe (Texte, Linien)

FormBorderStyle

FormBorderStyle

Die Rahmenart der Form

Height

Integer

Die Höhe der Form

Icon

Icon

Das Symbol für die Form

Left

Integer

Der Abstand vom linken Rand der Form zum linken Bildschirmrand in Pixel

Location

Point

Die Koordinaten der linken oberen Ecke der Form relativ zur linken oberen Ecke des Bildschirms

MaximizeBox

Boolean

Gibt an, ob die Maximieren-Schaltfläche in der Titelleiste angezeigt wird.

MaximumSize

Size

Die Maximalgröße der Form

MinimizeBox

Boolean

Gibt an, ob die Minimieren-Schaltfläche in der Titelleiste angezeigt wird.

MinimumSize

Size

Die Minimalgröße der Form

Opacity

Double

Die Undurchsichtigkeit einer Form

ShowInTaskbar

Boolean

Gibt an, ob die Form in der Taskleiste abgelegt werden kann.

Size

Size

Die Größe der Form

StartPosition

FormStartPosition

Die Position des Fensters zur Laufzeit

Top

Integer

Der Abstand vom oberen Rand der Form zum oberen Bildschirmrand in Pixel

TopMost

Boolean

Gibt an, ob die Form in der Anwendung als oberstes Fenster angezeigt wird.

TransparencyKey

Color

Die Farbe der Form, die transparent angezeigt wird

UseWaitCursor

Boolean

Gibt an, ob die Sanduhr als Mauszeiger angezeigt werden soll oder nicht.

Width

Integer

Die Breite der Form

WindowState

FormWindowState

Der Anzeigestatus des Fensters




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.

<< zurück
  Zum Rheinwerk-Shop
Zum Rheinwerk-Shop: Visual Basic 2008
Visual Basic 2008
Jetzt Buch bestellen


 Ihre Meinung?
Wie hat Ihnen das Openbook gefallen?
Ihre Meinung

 Buchempfehlungen
Zum Rheinwerk-Shop: Visual Basic 2012






 Visual Basic 2012


Zum Rheinwerk-Shop: Schrödinger programmiert C++






 Schrödinger
 programmiert C++


Zum Rheinwerk-Shop: IT-Handbuch für Fachinformatiker






 IT-Handbuch für
 Fachinformatiker


Zum Rheinwerk-Shop: Professionell entwickeln mit Visual C# 2012






 Professionell
 entwickeln mit
 Visual C# 2012


Zum Rheinwerk-Shop: Windows Presentation Foundation






 Windows Presentation
 Foundation


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
InfoInfo




Copyright © Rheinwerk Verlag GmbH 2009
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das Openbook denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.
Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern