Application.Run(Form)
Startet eine Nachrichtenschleife für den aktuellen Thread und zeigt das angegebene Formular an. Die Nachrichtenschleife ermöglicht es dem Formular, Windows-Nachrichten zu empfangen (z. B. Tastendruck, Mausklicks, Ungültigmachungen beim Malen), damit es reaktionsschnell erscheint und mit dem Benutzer interagiert. Wenn Sie ShowDialog()
eine Form
Instanz aufrufen , funktioniert dies ähnlich und es wird eine modale Nachrichtenschleife für das Formular erstellt, auf dem ShowDialog
aufgerufen wurde.
Es gibt keinen großen Unterschied zwischen den beiden Anrufen. Application.Run
Fügt eine zusätzliche Ereignisbehandlung hinzu, mit der Sie Ressourcen aufräumen können, wenn das Hauptformular geschlossen wird (siehe Application.ThreadExit ).
Die empfohlene Methode zum Starten von WinForms-Anwendungen ist die Verwendung Application.Run
, aber ich vermute, dass dies eher eine Konvention als eine Regel ist. Der Hauptgrund für die Verwendung Application.Run
ist, wenn Sie mehrere nicht modale Formulare öffnen möchten. Sie können dies tun mit:
new Form().Show();
new Form().Show();
Application.Run();
Sie konnten dies mit der ShowDialog()
Methode nicht erreichen , da eine der Formen modal sein müsste.
Was Ihre Frage betrifft, wie ein Anmeldeformular und dann das Hauptformular angezeigt werden soll, wenn die Anmeldung erfolgreich ist, denke ich, dass das, was Sie haben, in Ordnung ist:
if (new LoginForm().ShowDialog() == DialogResult.OK)
{
Application.Run(new MainForm());
}
Die Alternative besteht darin, die Installation selbst durchzuführen und eine Instanz von MainForm
im Abschlussereignis zu öffnen, LoginForm
wenn die Anmeldung erfolgreich war.