c# - 如何在不让应用程序关闭的情况下关闭主窗体?

时间:2012-06-12 20:15:35

标签: c# winforms

我想做什么:
- >打开MDI表单
- >关闭项目主表单
- >不关闭申请

我做了什么:

frmMain fm = new frmMain();
fm.Show();
this.Close()

任何帮助将不胜感激! :)

3 个答案:

答案 0 :(得分:2)

您可以使用隐藏方法。

尝试这样做:

frmMain fm = new frmMain();
this.Hide();
fm.Show();

或者:

frmMain fm = new frmMain();
this.Hide();
fm.ShowDialog();
this.Show();

后者将打开窗口,一旦关闭,前一个窗口将重新出现。

答案 1 :(得分:2)

我做的是解决这个问题:

this.Hide()

可能不是最好的方法,但仍然。

你甚至可以通过电话回复它

this.Show()

答案 2 :(得分:2)

如果您确实希望关闭主窗体,但让应用程序保持运行,则可以使默认类启动应用程序上下文:

using(MyContext myContext = new MyContext())
{
    Applicaton.Run(myContext);
}

其中MyContext继承自ApplicatonContext

然后,您的应用程序上下文可以根据需要加载和关闭表单。我通过一个项目执行此操作,其中我将上下文启动登录表单。只有在成功完成后才能加载主表单。我还允许通过终止主表单并重新加载登录表单来处理程序中的“注销”。

编辑:从评论中,你可能正在寻找的只是.Hide()。这不会导致您的表单卸载,并且对.Show()的调用将恢复它(例如,您可以使用计时器或其他持有对主表单的引用来进行调用的表单)。我更喜欢使用ApplicationContext,因为它负责将程序保存在内存中,远离用户可能尝试关闭的UI元素。