在我的应用程序中,我想首先显示登录表单,如果登录成功则显示主表单。目前我正在做这样的事情:
var A = new LoginForm();
if ( A.ShowDialog() == DialogResult.OK )
Application.Run(new MainForm());
但后来我开始想知道——这样做的意义何在?Application.Run()
?为什么不直接做(new MainForm()).ShowDialog()
还有?有什么不同?实现我想要的目标的正确方法是什么?
Application.Run(Form)
在当前线程上启动消息循环并显示指定的表单。消息循环使表单能够接收Windows 消息(例如,按键、鼠标单击、绘制失效),以使其表现出响应能力并与用户进行交互。你打电话时ShowDialog()
on a Form
例如,它实际上做了类似的事情,并为表单创建了一个模态消息循环ShowDialog
已被调用。
两次调用没有太大区别。Application.Run
确实添加了一些额外的事件处理,使您能够在主窗体关闭时对资源进行一些整理(请参阅应用程序.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
如果登录成功。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)