c#.net 的窗体关闭事件

在我们平时用的程序中,有很多已经把窗体右上方的关闭按钮的默认关闭改变了,当然,这其中有很多都是自己绘制,然后再写进去代码,但如果想留用Windows的自带的那个按钮也实现这个效果其实也是很简单的。

首先增加一个窗体关闭事件

this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(login_FormClosing);

然后添加他的委托函数 login_FormClosing(object sender, System.Windows.Forms.FormClosingEventArgs e)

e 中有两个属性是可以用到的,一个是CloseReason,这个属性值表示窗体关闭的原因,另一个是Cancel,这个属性表示是否取消关闭窗体,为true时取消,为false时不取消。

现在要实现的是单击窗体关闭按钮时窗体并不关闭,而是最小化,然后不在任务栏中显示,当单击我们给定的关闭按钮时才关闭。

我用了一个“全局变量”来判断单击的是否是我们设置的关闭按钮: private bool close = false; 当close 为true时,关闭窗体。

void login_FormClosing(object sender, System.Windows.Forms.FormClosingEventArgs e)
{
MessageBox.Show(e.CloseReason.ToString());
//显示关闭原因
if (close)
{
e.Cancel
= false; //close为true,关闭窗体
}
else
{
e.Cancel
= true;//取消关闭
this.WindowState = FormWindowState.Minimized;//最小化窗体
this.ShowInTaskbar = false;//不在任务栏显示
}
}

自定义关闭按钮的单击事件:

1 private void button2_Click( object sender, EventArgs e)
2 {
3 this .close = true ;
4 this .Close();
5 }

这样几行代码就实现了如迅雷,有道,卡巴斯基等软件的类似的简单功能,其实主要目的是为了防止用户误关闭应用程序。

PS: 下面是demo的代码

在方法Form1_FormClosing中添加如下代码:

if (MessageBox.Show("是否关闭?", "提示:", MessageBoxButtons.OKCancel, MessageBoxIcon.Asterisk) == System.Windows.Forms.DialogResult.OK)

{

e.Cancel = false; //---取消关闭 窗体

}

else

{

e.Cancel = true; //----关闭窗体

}

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值