4.4 Mehrere Formulare
Anwendungen bestehen häufig aus mehreren Formularen. Dabei gibt es ein Hauptformular, mit dem die Anwendung startet und Unterformulare, die von diesem Hauptformular aus gestartet werden. Nach Beendigung eines Unterformulars erscheint wieder das Hauptformular.
Das größte Problem in diesem Zusammenhang ist der Datentransport zwischen den verschiedenen Formularen. Betrachten wir die Anwendung Microsoft Word (= Hauptformular) und das Unterformular Schrifteigenschaften:
- Falls der Benutzer das Unterformular aufruft, sollen die aktuellen Schrifteigenschaften dort angezeigt werden (Daten vom Hauptformular zum Unterformular).
- Falls der Benutzer das Unterformular verlässt, sollen die neu eingestellten Schrifteigenschaften im Hauptformular angewandt werden (Daten vom Unterformular zum Hauptformular).
Es folgt ein Beispiel (Projekt MehrereFormulare), in dem der Datentransport sowohl für Steuerelemente als auch für Variablen beschrieben wird. Sie müssen zunächst ein weiteres Formular zur Anwendung hinzufügen. Dazu rufen Sie im Projektmappen-Explorer für das Projekt MehrereFormulare mithilfe der rechten Maustaste das Kontextmenü auf.
Im Kontextmenü wählen Sie den Punkt Hinzufügen • Windows Form. Im nachfolgenden Dialogfeld Neues Element hinzufügen ist bereits der Typ Windows Form markiert. Der vorgeschlagene Name Form2 kann von Ihnen beibehalten werden.
Nach Betätigung des Buttons Hinzufügen erscheint das neue Formular Form2 im Projektmappen-Explorer (siehe Abbildung 4.12). Die beiden Formulare werden gestaltet wie in Abbildung 4.13 und Abbildung 4.14.
Abbildung 4.12 Mehrere Formulare im Projektmappen-Explorer
Abbildung 4.13 Hauptformular
Abbildung 4.14 Unterformular
Der Ablauf des Programms:
- Die Anwendung erscheint mit dem Hauptformular.
- Die Betätigung des Buttons Anzeige führt zur Darstellung des Wertes der in diesem Formular deklarierten, öffentlichen Variablen Px.
- Der Button Start Unterformular führt zur Anzeige des Unterformulars.
- Im Label des Unterformulars wird automatisch der Text aus der TextBox des Hauptformulars angezeigt (falls vorhanden).
- Die Betätigung des Buttons Anzeige führt zur Erhöhung des Wertes der öffentlichen Variablen Px und zur Anzeige dieses neuen Wertes. Es wird also auf eine Variable des Hauptformulars sowohl lesend als auch schreibend zugegriffen.
- Die Variable Mx des Hauptformulars ist nur innerhalb der Klasse des Hauptformulars gültig, daher kann sie im Unterformular nicht erreicht werden.
- Der Button Ende Unterformular beendet das Unterformular.
- Im Label des Hauptformulars wird der Text aus der TextBox des Unterformulars angezeigt (falls vorhanden).
- Der Button Ende Hauptformular beendet das Hauptformular und damit die Anwendung.
Zunächst der Code des Hauptformulars:
Public Class Form1
Private Mx As Integer
Public Px As Integer
Private Sub Form1_Load(...) Handles MyBase.Load
Mx = 1
Px = 2
End Sub
Private Sub cmdStartUnterformular_Click(...
) Handles ...
Form2.ShowDialog()
End Sub
Private Sub cmdEndeHauptformular_Click(...
) Handles ...
Me.Close()
End Sub
Private Sub cmdAnzeige_Click(...) Handles ...
lblHauptformular.Text = "Px: " & Px
End Sub
End Class
Listing 4.7 Projekt »MehrereFormulare«, Hauptformular
Zur Erläuterung:
- Die öffentliche Variable Px und die klassenweit gültige Variable Mx werden erzeugt und bekommen zum Ladezeitpunkt des Hauptformulars Startwerte zugewiesen.
- Das Unterformular wird mithilfe der Methode ShowDialog() modal angezeigt. Modal bedeutet: Das Hauptformular kann nicht mehr bedient werden, bis das Unterformular geschlossen wird.
- Die Methode Close() schließt das Hauptformular und damit die Anwendung.
Es folgt der Code des Unterformulars:
Public Class Form2
Private Sub Form2_Load(...) Handles MyBase.Load
lblUnterformular.Text =
Form1.txtHauptformular.Text
End Sub
Private Sub cmdEndeUnterformular_Click(...
) Handles ...
Form1.lblHauptformular.Text =
txtUnterformular.Text
Me.Close()
End Sub
Private Sub cmdAnzeige_Click(...) Handles ...
Form1.Px = Form1.Px + 1
lblUnterformular.Text = "Px: " & Form1.Px
'lblUnterformular.Text = "Mx: " & Form1.Mx
End Sub
End Class
Listing 4.8 Projekt »MehrereFormulare«, Unterformular
Zur Erläuterung:
- Zum Ladezeitpunkt des Unterformulars wird der Inhalt der TextBox des Hauptformulars dem Label des Unterformulars zugewiesen.
- Vor dem Beenden des Unterformulars wird der Inhalt der TextBox des Unterformulars dem Label des Hauptformulars zugewiesen.
4.4.1 Allgemeine Code-Module
Neben Formular-Modulen können Sie auch allgemeine Code-Module verwenden. Darin können öffentliche Variablen, Felder, Prozeduren und Funktionen untergebracht werden.
Das Projekt MehrereFormulare wurde um ein solches Code-Modul ergänzt. Darin wurde eine öffentliche Variable Zx deklariert. In den Formular-Modulen wird auf diese Variable sowohl lesend als auch schreibend zugegriffen.
Sie müssen zunächst das Code-Modul zum Projekt hinzufügen. Dazu rufen Sie im Projektmappen-Explorer für das Projekt MehrereFormulare mithilfe der rechten Maustaste das Kontextmenü auf. Darin wird der Punkt Hinzufügen • Modul gewählt.
Im nachfolgenden Dialogfeld Neues Element hinzufügen ist bereits der Typ Modul markiert. Der vorgeschlagene Name Module1 kann beibehalten werden. Nach Betätigung des Buttons Hinzufügen erscheint das neue Code-Modul im Projektmappen-Explorer (siehe Abbildung 4.15).
Abbildung 4.15 Code-Modul im Projektmappen-Explorer
Zunächst der Code im Code-Modul:
Module Module1
Public Zx
End Module
Listing 4.9 Projekt »MehrereFormulare«, Code-Modul
Zur Erläuterung:
- Es wurde eine öffentliche Variable deklariert.
Es folgen die Änderungen im Hauptformular:
Public Class Form1
Private Mx As Integer
Public Px As Integer
Private Sub Form1_Load(...) Handles MyBase.Load
Mx = 1
Px = 2
Zx = 3
End Sub
[...]
Private Sub cmdAnzeige_Click(...) Handles ...
lblHauptformular.Text = "Px: " & Px &
", Zx: " & Zx
End Sub
End Class
Listing 4.10 Projekt »MehrereFormulare«, geändertes Hauptformular
Als Letztes folgen die Änderungen im Unterformular:
Public Class Form2
[...]
Private Sub cmdAnzeige_Click(...) Handles ...
Form1.Px = Form1.Px + 1
Zx = Zx + 1
lblUnterformular.Text = "Px: " & Form1.Px &
", Zx: " & Zx
End Sub
End Class
Listing 4.11 Projekt »MehrereFormulare«, geändertes Unterformular
Zur Erläuterung:
- Sowohl im Hauptformular als auch im Unterformular kann die öffentliche Variable Zx aus dem Code-Modul direkt über ihren Namen erreicht werden.
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.