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
如果登录成功,则在关闭事件中打开一个实例。