请参考下图:
我正在寻找从一种形式打开另一种形式的最佳方法。打开菜单表单后,我要关闭登录表单。我曾尝试这样做,但是当我尝试将其称为MDI容器的子代时迷路了。
无法显示主表单的原因是因为一旦关闭登录表单,应用程序的消息泵就会关闭,这将导致整个应用程序退出。Windows消息循环与登录表单相关联,因为这是您在项目属性中设置为启动表单的表单。查看“ Program.cs”文件,您将看到负责的代码:Application.Run(new LoginForm())。请在MSDN上查看有关该方法的文档,其中对此进行了更详细的说明。
最好的解决方案是将代码从您的登录表单中移出到“ Program.cs”文件中。程序首次启动时,您将创建并以模式对话框形式显示登录表单(该对话框在单独的消息循环上运行,并阻止其余代码的执行,直到关闭为止)。登录对话框关闭时,您将检查其DialogResult属性以查看登录是否成功。如果是这样,则可以使用Application.Run启动主窗体(从而创建主消息循环)。否则,您可以不显示任何形式就退出该应用程序。像这样的东西:
static void Main()
{
LoginForm fLogin = new LoginForm();
if (fLogin.ShowDialog() == DialogResult.OK)
{
Application.Run(new MainForm());
}
else
{
Application.Exit();
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句