11.2 Eine erste Windows-Anwendung
Die Kommunikation zwischen Benutzer und Programmlogik erfolgt über Steuerelemente (Controls). Sie können nicht einfach auf dem Bildschirm platziert werden, sondern werden logisch und optisch in einem Fenster zusammengefasst. Im folgenden Beispiel zeige ich Ihnen, wie Sie grundsätzlich eine Windows-Anwendung erstellen. Dazu erweitern Sie die Form durch zwei Textboxen und zwei Schaltflächen (siehe Abbildung 11.2). Zur Laufzeit wird nach einem Klick auf die mit Kopieren beschriftete Schaltfläche der Inhalt der oberen Textbox auch in der unteren angezeigt. Die Schaltfläche Beenden schließt die Anwendung.
Abbildung 11.2 Fensterlayout der ersten Windows-Anwendung
Die vier Steuerelemente müssen wir der anfangs noch leeren Form hinzufügen und dann ausrichten. Sie können das auf zwei Wegen erreichen:
- Sie markieren das gewünschte Steuerelement in der Toolbox. Fährt man danach mit der Maus über den Designer des Formulars, ändert der Mauszeiger seine Darstellung in ein Kreuz. Durch Drücken und Festhalten der linken Maustaste wird entweder die linke obere oder die rechte untere Position des Steuerelements festgelegt. Wenn Sie die Maustaste weiter gedrückt halten, können Sie das Steuerelement bis zur gewünschten Darstellungsgröße aufziehen.
- Die zweite Möglichkeit ist der einfache Doppelklick auf das Steuerelement in der Toolbox. Daraufhin wird eine Instanz des Steuerelements in der linken oberen Ecke der Arbeitsfläche der Form angezeigt. Das Steuerelement zeichnet sich in einer Standardabmessung.
Steuerelemente positionieren und ausrichten
Um das Steuerelement zu positionieren und auszurichten, müssen Sie das entsprechende Steuerelement in der Form erst auswählen. Danach können Sie es an den Markierungspunkten greifen und wunschgemäß anpassen. Die Richtung der Markierungspunktpfeile zeigt die Richtung der Größenänderung. Wenn Sie mit dem Mauszeiger auf die Fläche des Controls fahren, symbolisiert das Kreuz mit den Pfeilspitzen, dass durch Drücken und Festhalten der linken Maustaste das gesamte Element ohne Veränderung seiner Größe verschoben werden kann.
Wollen Sie mehrere Steuerelemente relativ zueinander ausrichten, stehen Ihnen mehrere Möglichkeiten zur Verfügung:
- Sie können die Steuerelemente an den Rasterpunkten ausrichten, die im Forms-Designer der Entwicklungsumgebung angezeigt werden.
- Sie können die Steuerelemente mithilfe von Bezugslinien positionieren, die während des Verschiebens angezeigt werden, wenn zwei benachbarte Steuerelemente horizontal oder vertikal identisch ausgerichtet sind.
- Im Hauptmenü von Visual Studio 2008 bietet der Menüpunkt Format mehrere Möglichkeiten, mehrere gleichzeitig markierte Steuerelemente in der Größe anzupassen, die Zwischenabstände anzugleichen oder nach verschiedenen Kriterien zu positionieren.
Um die beiden ersten Punkte einzustellen, öffnen Sie den Dialog Optionen des Menüs Extras. Im linken Teilbereich wählen Sie den Knoten Windows Forms Designer aus und können anschließend im rechten Teil unter LayoutMode das von Ihnen bevorzugte Verfahren einstellen (SnapToGrid oder SnapLines). Darüber hinaus lassen sich hier unter anderem auch die Rasterpunktabstände und die Anzeige der Rasterpunkte im Forms-Designer beeinflussen (siehe Abbildung 11.3).
Abbildung 11.3 So stellen Sie das Positionierungsverhalten des Forms-Designers ein.
Bezeichnung der Steuerelemente
Jedes Steuerelement, das aus der Toolbox in die Form gezogen wird, ist die Instanz einer Klasse und hat einen es kennzeichnenden Bezeichner, der in der Eigenschaft Name festgelegt ist. Obwohl das System automatisch einen Namen vergibt, der an den Typ des Steuerelements angelehnt ist, sollten Sie sich angewöhnen, einen beschreibenden Namen festzulegen. Da Sie im Programmcode einer Windows-Anwendung immer wieder Eigenschaften und Methoden der Steuerelemente abrufen oder ändern, vermeiden Sie durch einen beschreibenden Namen Zuordnungsprobleme, und der Code wird besser (bzw. überhaupt erst) lesbar.
Den Bezeichner ändern Sie am einfachsten, indem Sie das entsprechende Steuerelement im Forms-Designer markieren und danach im Eigenschaftsfenster, das immer die Eigenschaften des aktuell markierten Steuerelements anzeigt, den Wert für Name neu eintragen.
Wir sollten für die Steuerelemente unserer Form aus Tabelle 11.1 die folgenden Namen im Eigenschaftsfenster festlegen:
Typ | Ursprünglicher Name | Eintrag im Eigenschaftsfenster |
TextBox |
textbox1 |
txtOriginal |
TextBox |
textbox2 |
txtKopie |
Button |
button1 |
btnKopieren |
Button |
button2 |
btnBeenden |
Hinweis |
Wenn Sie den Wert Name für die Eigenschaft Name wählen, kann es zu verwirrenden Fehlermeldungen kommen (fehlerfreie Steuerelemente werden reklamiert). |
Beachten Sie, dass für die Bezeichner ein Präfix gewählt worden ist, aus dem der Typ des Steuerelements hervorgeht. Hier wurde »txt« als Präfix für die Textboxen gewählt und »btn« für die Schaltflächen (die vom Typ Button sind).
Wenn Sie mir bis hierher gefolgt sind, werden Sie feststellen, dass die Beschriftung Ihrer Schaltflächen nicht mit der in der Abbildung übereinstimmt. Natürlich ist auch für die Beschriftung eine Eigenschaft verantwortlich – die Eigenschaft Text, die wir im Eigenschaftsfenster passend festlegen. Formulare haben auch eine Eigenschaft Text. Diese beschreibt den Text in der Titelleiste. In Abbildung 11.2 ist »Meine erste WinAnwendung« eingetragen.
Wir könnten noch weitere Änderungen am Layout oder an den Verhaltensweisen der beteiligten Komponenten vornehmen, beispielsweise um zu verhindern, dass der Anwender zur Laufzeit die Größe der Form ändert. Für den Moment soll es an dieser Stelle aber ausreichen.
Hinweise zum Eigenschaftsfenster
Im Eigenschaftsfenster lassen sich sehr schnell die Eigenschaften der Komponenten festlegen. Um es effektiv einzusetzen, sollten Sie sich mit der Bedienung vertraut machen:
- Die Liste der Eigenschaften kann sowohl alphabetisch als auch nach Kategorien sortiert angezeigt werden. Die Umschaltung erfolgt mit den beiden Schaltflächen in der linken Ecke (siehe Abbildung 11.4, »Symbolleiste des Eigenschaftsfensters«.
- Steuerelemente haben vordefinierte Eigenschaftswerte. Abweichungen von den Standardwerten sind fett dargestellt.
- Benötigen Sie die Hilfe zu einer Eigenschaft, markieren Sie diese im Eigenschaftsfenster und drücken die -Taste.
- Beabsichtigen Sie, einer bestimmten gemeinsamen Eigenschaft mehrerer Steuerelemente den gleichen Wert zuzuweisen (z. B. um allen Schaltflächen in einer Form dieselbe Höhe zuzuweisen), dann kann diese Eigenschaft für alle infrage kommenden Steuerelemente durch einen einzigen Eintrag im Eigenschaftsfenster verändert werden. Dazu müssen Sie alle betroffenen Steuerelemente im Designer gleichzeitig markieren, indem Sie mit der Maus einen Rahmen um die entsprechenden Steuerelemente ziehen. Sie können auch zuerst ein Steuerelement markieren und danach der Reihe nach die anderen, während Sie die -Taste gedrückt halten.
- Eine Eigenschaftsänderung kann rückgängig gemacht werden, indem Sie im Kontextmenü einer markierten Eigenschaft den Punkt Zurücksetzen wählen.
Am unteren Rand des Eigenschaftsfensters wird die markierte Eigenschaft mit wenigen Worten erläutert. Für eine erste Erklärung reicht der Text meist aus. Wenn Sie eine genauere benötigen, müssen Sie in die Dokumentation schauen. Sie können diesen Bereich über das Kontextmenü ausblenden, wenn Sie darauf keinen Wert legen.
Streng genommen trägt das Eigenschaftsfenster seinen Namen zu Unrecht, da in der Symbolleiste von der Ansicht der Liste aller Eigenschaften auch auf die Liste der Ereignisse umgeschaltet werden kann, die zu dem ausgewähltem Komponententyp gehören. Die Ereignisliste kann ebenfalls sowohl alphabetisch als auch nach Gruppen geordnet angezeigt werden.
Abbildung 11.4 Symbolleiste des Eigenschaftsfensters
Code einer Windows-Anwendung
Windows-Anwendungen sind ereignisgesteuert. Jedes Peripheriegerät, sei es der Drucker, die Maus oder die Tastatur, kann Ereignisse auslösen. Auch Steuerelemente gliedern sich in das Ereignismodell ein. Klickt der Benutzer zum Beispiel zur Laufzeit des Programms auf eine Schaltfläche, wird das Ereignis Click ausgelöst. Wenn für das Ereignis ein Ereignishandler registriert ist, wird dieser ausgeführt. Sie müssen nicht jedes Ereignis einer Windows-Komponente behandeln, sondern nur die zur Interaktion mit dem Benutzer benötigten Ereignisse.
Am einfachsten können Sie einen Ereignishandler implementieren, wenn Sie im Designer auf ein Steuerelement doppelklicken. Daraufhin öffnet sich der Codeeditor der Form, und der Eingabecursor befindet sich im Ereignishandler des Standardereignisses. Bei einem Button ist dies Click, bei einer Textbox TextChanged und bei einer Form Load.
Ein Doppelklick auf den Kopieren-Button (siehe Abbildung 11.2) erzeugt die folgende Methodensignatur:
Private Sub btnKopieren_Click(ByVal sender As Object, ByVal e As EventArgs) _ Handles btnKopieren.Click End Sub
Der Name der Methode lautet btnKopieren_Click und setzt sich aus dem Namen des Steuerelements und des Ereignisses zusammen. Beide sind durch einen Unterstrich voneinander getrennt. Die ereignisspezifische Parameterliste ist vorerst ohne Belang.
Im Anweisungsblock werden die Anweisungen codiert, die ausgeführt werden, wenn der Anwender zur Laufzeit auf die Schaltfläche mit der Bezeichnung btnKopieren klickt. Wir wollen den Inhalt der Textbox txtOriginal in die Textbox txtKopie schreiben:
Private Sub btnKopieren_Click(ByVal sender As Object, ByVal e As EventArgs) _ Handles btnKopieren.Click txtKopie.Text = txtOriginal.Text End Sub
Die Eigenschaft Text einer TextBox beschreibt den angezeigten Textboxinhalt. Daher wird der Inhalt der Eigenschaft Text des Objekts txtOriginal ausgewertet und der Eigenschaft Text des Objekts txtKopie zugewiesen.
Analog beschaffen wir uns auch den Ereignishandler des Click-Ereignisses der Schaltfläche btnBeenden und schreiben den folgenden Code:
Private Sub btnBeenden_Click(ByVal sender As Object, ByVal e As EventArgs) _ Handles btnBeenden.Click Application.Exit() End Sub
Die Klasse Application stellt Methoden und Eigenschaften für die Verwaltung einer Anwendung zur Verfügung. Eine von diesen ist die parameterlose statische Methode Exit, die dazu dient, die laufende Anwendung zu schließen.
Nachfolgend sehen Sie den zusammengefassten Code. Bitte beachten Sie, dass dies nur ein Teil der Klasse ist; den Rest der partiellen Klasse zeige ich unten.
'...\WinForm\ErsteWindowsAnwendung\TextboxKopieren.vb |
Public Class TextboxKopieren Private Sub btnKopieren_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnKopieren.Click txtKopie.Text = txtOriginal.Text End Sub Private Sub btnBeenden_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnBeenden.Click Application.Exit() End Sub End Class
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.