首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果只关闭一个窗口,如何防止应用程序终止?

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

Stack Overflow用户
提问于 2012-02-20 05:27:35
回答 2查看 139关注 0票数 2

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

初始创建

代码语言:javascript
运行
复制
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Login());
}

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

代码语言:javascript
运行
复制
new MainScreen(uID, this).Show();
this.Hide();

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

代码语言:javascript
运行
复制
Login newLoginForm = new Login(this);
mainLoginForm.Close();

我的设计是完全错误的,还是我没有使用正确的方法?!任何帮助都是最好的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-20 05:33:25

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

代码语言:javascript
运行
复制
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();
}
票数 3
EN

Stack Overflow用户

发布于 2012-02-20 06:21:42

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

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9353410

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档