C# 关于WinForm窗体程序的退出方法总结

C# 关于WinForm窗体程序的退出方法总结很多人对于关闭窗口都有不同的需求,以下是关闭窗体的几种方法:一、关闭窗体1.this.Close();仅仅是关闭当前窗口,若不是主窗体的话程序无法退出。2.Application.Exit();强制所有消息终止,退出所有的窗体。3.Application.ExitThread();强制终止调用线程上的所有消息。4.System.Environment.Exit(0);最彻底的退…

一、关闭窗体

  1. this.Close();仅仅是关闭当前窗口,若不是主窗体的话程序无法退出。
  2. Application.Exit();强制所有消息终止,退出所有的窗体。
  3. Application.ExitThread();强制终止调用线程上的所有消息。
  4. System.Environment.Exit(0);最彻底的退出方式,不管什么线程都可以被强制退出。

二、登录窗体与主窗体
当我们从登录窗体登录成功后,登录窗体消失,主窗体出现;但是当我们关闭主窗体时程序却没有结束,这是因为登录窗体是主线程,我们仅仅是关闭了主窗体的线程,并没有关闭主线程。

情况一:点击窗体关闭按钮后,窗体退出,程序结束

方法一:
private void FrmMain_FormClosing(object sender, FormClosingEventArgs e)         
{ 
            Application.Exit();         
}  
方法二:
private void FrmMain_FormClosed(object sender, FormClosedEventArgs e)         
{ 
            Application.Exit();         
}  

我们需要知道FormClosing与FormCLosed的却别是:FormClosing在关闭发生前,可取消;FormClosed在关闭之后发生,关闭动作不可取消。


情况二:点击窗体关闭按钮后,弹出提示,若点击确认则窗体退出,程序结束

方法一:
private void FrmMain_FormClosing(object sender, FormClosingEventArgs e)         
{             
            if (MessageBox.Show("真的要退出程序吗?", "退出程序", MessageBoxButtons.OKCancel) == DialogResult.Cancel)
            {
            	e.Cancel = true;  
            }     
 			else
 			{
 				Application.Exit();
 			}
} 

因为方法一在点击确定后,因为Application.Exit();会触发第二次弹框提示,所以如果想要只出现一次弹窗提示,需要将DialogResult.OK改为DialogResult.Cancel并且if语句中点击确定后执行空语句,将Application.Exit();添加到Form_Closed中去执行。不过我们为了优化代码使其更加简便我们引入了取消订阅事件,见方法二:

方法二:
private void FrmMain_FormClosing(object sender, FormClosingEventArgs e)         
{             
            if (MessageBox.Show("真的要退出程序吗?", "退出程序", MessageBoxButtons.OKCancel) == DialogResult.OK)
            {
            	this.FormClosing-=FrmMain_FormCLosing;
            	Application.Exit(); 
            }     
            else
            {
            	e.Cancel = true; 
            }    
} 

方法二中的取消订阅事件:

this.FormClosing-=FrmMain_FormCLosing;

参考资料:

  1. 如何:订阅和取消订阅事件
  2. C#知识回顾

说明:FormCLosed与FormClosing事件用vs时在哪里可以找到?
双击将要使用该事件的窗体,在窗体的属性中点击闪电图标后在下面行为列表中查找:
在这里插入图片描述
有时你点击闪电后还是没有找到,这是因为选择的对象问题:
点击选择System.Windows.Forms.Form
在这里插入图片描述
这样就基本ok了~

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/38506.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注