如果只关闭一个窗口,如何阻止应用程序终止?

时间:2012-02-19 21:27:35

标签: c# winforms visual-studio-2010

我试图在新创建的表单之间切换,但是如果我在关闭旧表单之前看到创建新屏幕,则整个应用程序将退出;

Inital Creation

static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Login());
}

此登录屏幕会导致创建一个新窗口,此时我正在隐藏屏幕以保持应用程序正常运行;

new MainScreen(uID, this).Show();
this.Hide();

在MainScreen中,我有一个“更改用户”按钮,这意味着我需要创建一个新的登录屏幕,但下面的代码只退出整个正在运行的应用程序;

Login newLoginForm = new Login(this);
mainLoginForm.Close();

我设计这个完全错误的方式还是我只是没有使用正确的方法?!任何帮助都会很棒。

2 个答案:

答案 0 :(得分:3)

当您关闭第一个登录表单时,您的应用程序退出Run(new Login()) 所以你应该从Run(new MainScreen())开始, 在构造函数内部或此表单的Form_Load中调用您的登录名。

static void Main() 
{ 
    Application.EnableVisualStyles(); 
    Application.SetCompatibleTextRenderingDefault(false); 
    Application.Run(new MainScreen()); 
} 

public MainScreen()
{
    Login loginForm = new LoginForm();
    if(loginForm.ShowDialog() == DialogResult.Cancel)
        Application.Exit();
    InitializeComponent();
}

答案 1 :(得分:1)

不幸的是,要在WinForms中实现这一点,您需要管理应用程序并重新计算窗口。

Application.Run(ApplicationContext)的MSDN文档中有关于如何实现它的示例代码。

在WPF中,您只需设置Application.ShutdownMode = ShutdownMode.OnLastWindowClosed