Application.Run(Form)
запускает цикл сообщений в текущем потоке и отображает указанную форму. Цикл сообщений позволяет форме получать сообщения Windows (например, нажатия клавиш, щелчки мыши, аннулирование рисования), что позволяет ей выглядеть отзывчивой и взаимодействовать с пользователем. Когда вы вызываете ShowDialog()
для экземпляра Form
, он фактически делает аналогичную вещь и создает модальный цикл сообщений для формы, в которой был вызван ShowDialog
.
Нет большой разницы между двумя вызовами. Application.Run
добавляет некоторую дополнительную обработку событий, позволяющую вам привести в порядок ресурсы, когда главная форма закрыта (см. Application.ThreadExit ).
Рекомендованный способ запуска приложений WinForms - это использование Application.Run
, но я подозреваю, что это скорее соглашение, чем правило. Самая большая причина для использования Application.Run
- если вы хотите открыть несколько немодальных форм. Вы можете сделать это, используя:
new Form().Show();
new Form().Show();
Application.Run();
Вы не можете достичь этого, используя метод ShowDialog()
, поскольку одна из форм должна быть модальной.
Что касается вашего вопроса о том, как показать форму входа в систему, а затем основную форму, если регистрация прошла успешно, я думаю, что у вас все в порядке:
if (new LoginForm().ShowDialog() == DialogResult.OK)
{
Application.Run(new MainForm());
}
Альтернатива - выполнить сантехнику самостоятельно и открыть экземпляр MainForm
в событии закрытия LoginForm
, если вход был успешным.