Die Community zu .NET und Classic VB.
Menü

FAQ 0107: Wie kann ich ein Steuerelement oder eine WindowsForm aus einem Modul oder einer Klasse ansprechen (.NET)?

 von 

Frage 

Wie kann ich ein Steuerelement oder eine WindowsForm aus einem Modul oder einer Klasse ansprechen (.NET)?

Antwort  

Steuerelemente oder Eigenschaften eines Formulars sind nicht "Shared", das heißt, man kann sie nur über eine Instanz des Form-Objektes ansprechen. Jede Instanz einer Form, kann selbige genau einmal gleichzeitig anzeigen. Das heißt ohne Instanz lässt sie sich garnicht anzeigen und mit 20 Instanzen siehst du auf dem Monitor nichts anderes mehr (sofern du alle Instanzen gleichzeitig anzeigst). Also kann auch jede Instanz andere Eigenschaften besitzen. Der Benutzer kann z.B. den Inhalt einer Textbox in jeder angezeigten Instanz einer Form anders verändern. Um eine Instanz zu erstellen, brauchen wir zuerst einmal eine Variable, mit der wir unsere Form später ansprechen.

'   1)
Private/Friend MeineFormInstanz As Form1 'Deklaration im Deklarationsteil des Moduls oder der Klasse
'   2)
Dim MeineFormInstanz As Form1 'Deklaration in einer Sub
'   3)
Friend Sub MacheEtwasMitMeinerForm(MitWelcherInstanzBitte As Form1) 'Instanz wird als Parameter übergeben

Listing 1: Beispiel für die Variablendeklaration

Bei den Varianten 1 und 2 hat man bisher noch immer keine Instanz, sondern nur eine Variable des Typs Form1. Man muss der Variable, die bislang den Pseudowert "Nothing" hat, noch einen Inhalt zuweisen.

MeineFormInstanz = New Form1

Listing 2: Form referenzieren (Variante 1 und 2)

Anschließend kann man die Eigenschaften und Steuerelemente dieser Forminstanz bearbeiten. Das ist allerdings nur sinnvoll, wenn die Form nicht bereits an anderer Stelle als New deklariert wurde. Dann hat man nämlich gerade eine neue Form erstellt, die nichts mit der alten, die vielleicht gerade angezeigt wird, zu tun hat (außer daß sie des selben Typs ist).
Um aus einem Modul eine bereits angezeigt oder woanders (mit dem Schlüsselwort New) erstellte Form zuzugreifen, bieten sich zwei Möglichkeiten an:
Falls man die Form nur in einer Sub im Modul benötigt, ist es möglich, die Form, oder auch nur das Steuerelement, als Parameter an eine Sub zu übergeben. Siehe Variante 3. Die Sub ist dann z.B. aus der Form selbst aufzurufen:

Modul1.MacheEtwasMitMeinerForm(Me)

Listing 3: Form als Parameter übergeben (Variante 3)

Benötigt man die Form hingegen öfter im Modul, bietet es sich an, sie modulweit zu deklarieren (Variante 1). Dann weist man dem Modul am Besten bei Erstellung der Form selbige als Eigenschaft zu:

Dim MeineFormInstanz As New Form1
Modul1.VerwendeteForm=MeineFormInstanz

Listing 4: Form für ein Modul bereitstellen

In einer Klasse bietet sich die Property an:

Friend Property MeineForm() As Form1
    Get
        Return MeineFormInstanz
    End Get

    Set(ByVal ÜbergebeneForm As Form)
        MeineFormInstanz = ÜbergebeneForm
    End Set
End Property

Listing 5: Form für eine Klasse bereitstellen

Nun kann man auch hier alle Eigenschaften manipulieren.

Alles hier aufgelistete lässt sich auch problemlos auf Steuerelemente anwenden.

Ihre Meinung  

Falls Sie Fragen zu dieser FAQ haben, Ihre Erfahrung mit anderen Nutzern austauschen möchten oder auf eine Ergänzung hinweisen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.