[英]Opening another form in an MDI container
请参考下图:
我正在寻找从一种形式打开另一种形式的最佳方法。 打开菜单表单后,我要关闭登录表单。 我曾尝试这样做,但是当我尝试将其称为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();
}
}
如果您开发WPF表单,则可以使用“ http://wpfmdi.codeplex.com/ ”。 或在Win Form中,您可以使用自己想要的形式
尝试这个
//global form
LoginForm login = new LoginForm();
public void menuOpen()
{
if(login.Visible)
login.Close();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.