Die Community zu .NET und Classic VB.
Menü

FAQ 0027: Wie lade ich Dialoge, deren Namen in einer Variable steht?

 von 

Frage 

Ich möchte eine Form laden, deren Name in einer String-Variable steht. Wie geht das?

Beispiel  

VB stellt die Collection Forms zur Verfügung (Code von Konrad Rudolph gekürzt):

Function LoadFormDynamic(ByVal strFormName As String) As Form
    '   Diese Funktion lädt eine Form anhand ihres Namens.
    '   Erwartet wird der Name der Form.
    '   Es wird eine Referenz auf die Form zurückgegeben.
    
     On Error Resume Next

     Set LoadFormDynamic = VB.Forms.Add(strFormName)

     If (Err.Number > 0) Then
         On Error Goto 0
         Call Err.Raise( _
             424, "LoadFormDynamic", _
             "Objekt erforderlich:" & vbNewLine & _
             "Im aktuellen Projekt gibt es keine Form namens '" & _
             strFormName & "'." _
         )
     End If
End Function

Listing 1: Funktion zum Starten einer Form

Dim NewForm As Form

Set NewForm = LoadFormDynamic("Form3")

If (Not(NewForm Is Nothing)) Then
    NewForm.Show vbModal
End If

Listing 2: Ein möglicher Aufruf

Anmerkung von Frank Nöther:
Der obige Quelltext erstellt bei jedem Aufruf eine neue Instanz des genannten Dialogs. Ist dieses Verhalten nicht erwünscht, muß die Forms-Auflistung geprüft werden, ob bereits eine Instanz existiert.

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.