窗体关闭按钮

    在我们平时用的程序中,有很多已经把窗体右上方的关闭按钮的默认关闭改变了,当然,这其中有很多都是自己绘制,然后再写进去代码,但如果想留用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         }

 

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

 

posted @ 2009-06-29 10:42  Aeridy  阅读(1492)  评论(2编辑  收藏  举报