Application.Run()和Form.ShowDialog()有什么区别?

Application.Run()和Form.ShowDialog()有什么区别?,第1张

Application.Run()和Form.ShowDialog()有什么区别?

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



欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5014856.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-11-14
下一篇2022-11-14

发表评论

登录后才能评论

评论列表(0条)

    保存