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

本文关键字:窗口 何防止 终止 应用程序 一个 如果 | 更新日期: 2023-09-27 18:25:03

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

初始创建

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

这个登录屏幕将创建一个新窗口,此时我将隐藏屏幕以保持应用程序运行;

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

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

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

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

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

当您关闭第一个登录表单时,您的应用程序将退出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();
}

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

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

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