Wie kann ich eine Windows Forms Anwendung mit variablem Start Form erstellen?
Ich erstelle mit Visual Studio 2022 ein neues Windows Forms VB.net Projekt und möchte abhängig von den Commandline-Parametern entweder Form1, Form2 oder gar kein Form anzeigen.
In der ApplicationEvents.vb leite ich mit einem Eventhandler
Public Shared Sub ApplicationStartup(ByVal sender As Object, ByVal e As StartupEventArgs) Handles Me.Startup
MyNameSpace.MainApp.Main(e.CommandLine.ToArray)
End Sub
bereits in eine eigene Startup-Sub um.
Das funktioniert auch bereits, allerdings öffnet die Applikation stur wie ein Esel trotzdem das Startform, selbst wenn ich die Anwendung innerhalb der Weiche mit Application.Exit beende. Öffne ich mit der Weiche ein anderes Startform, wird ungewollt das ursprüngliche Startform zusätzlich geöffnet.
Wie öffne ich ausschließlich das gewünschte Form beim Start der Anwendung, also Form1, Form2 oder gar keines?
1 Antwort
Setze in dem Event Handler die Main Form.
Beispiel:
Private Sub MyApplication_Startup(sender As Object, e As StartupEventArgs) Handles Me.Startup
Dim window As Form = Nothing
Dim param As String = "2"
Select Case param
Case "1"
window = New Form1
Case Else
window = New Form2
End Select
Application.MainForm = window
End Sub
Je nach Wert von param (in dem Beispiel ist der natürlich noch nicht dynamisch) wird entweder Form1 oder Form2 geöffnet.
Wenn du anfangs kein Fenster anzeigen möchtest, brauchst du einen kleinen Umweg. Lege dir eine extra Form-Klasse an, die beim Laden direkt wieder versteckt wird.
Private Sub HideOnLoad(sender As Object, e As EventArgs) Handles MyBase.Load
Hide()
ShowInTaskbar = False
End Sub
Eine Instanz dieser Klasse muss bei Anwendungsstart dann als Hauptfenster gesetzt werden.