Application.Run(Form)
inicia un ciclo de mensajes en el hilo actual y muestra el formulario especificado. El bucle de mensajes permite que el formulario reciba mensajes de Windows (p. Ej., Pulsación de teclas, clics del mouse, invalidación de pintura) para permitir que aparezca receptivo y tenga interacción con el usuario. Cuando llama al ShowDialog()
en una instancia Form
, realmente hace algo similar y crea un bucle de mensaje modal para el formulario en el que se ha llamado ShowDialog
.
No hay mucha diferencia entre las dos llamadas. Application.Run
agrega un poco de manejo de eventos adicionales que le permite hacer algunos arreglos de recursos cuando se cierra el formulario principal (consulte).
La forma recomendada para iniciar aplicaciones WinForms es usando Application.Run
, pero sospecho que esto es más una convención que una regla. La razón más importante para usar Application.Run
es si desea abrir múltiples formularios no modales. Esto se puede hacer usando:
new Form().Show();
new Form().Show();
Application.Run();
No se podía lograr esto usando el método ShowDialog()
como una de las formas tendría que ser modal.
cuanto a su pregunta de cómo mostrar un formulario de acceso y luego la forma principal si el inicio de sesión se realiza correctamente, creo que lo que tienes es fina:
if (new LoginForm().ShowDialog() == DialogResult.OK)
{
Application.Run(new MainForm());
}
La alternativa es hacer la fondear usted mismo y abrir una instancia de MainForm
en el evento de cierre de LoginForm
si el inicio de sesión fue exitoso.
Entonces, ¿esto significa que puede tener un bucle de mensaje en el mismo hilo que los dos formularios mientras puede manejar los tres por separado? – SomeNickName