现在的位置: 首页 > 综合 > 正文

WinForm中的关闭按钮

2018年04月18日 ⁄ 综合 ⁄ 共 1716字 ⁄ 字号 评论关闭

 

在平时的练习中经常出现点击关闭按钮后进程仍然在继续,这时你需要去VS的界面上点击“停止调试”才可以结束程序的运行,让自己也多了些不便,那么

可以在关闭窗体的时候就把程序的进程终止就是一项比较实用的功能了。

        一般情况下,我们要关闭一个窗体的时候可以直接点击右上角的“X”或是在某个按钮的事件里用下面的一句:

         this.Close();

        这样就可以关闭了当前打开的窗体,如上这样的关闭仅仅是关闭的窗体,却没有终止程序的进程。那我们可以在某个Button事件中使用另一句

        Application.Exit();

        这样便彻底结束了调试程序的进程。

        如果是右上角的“X”的话,我们需要去窗体事件里找到FormClosed,然后在事件里加上这句话,再次运行点击关闭同样会终止进程。

       

 

=============================================================================================================================

 

     下面再介绍个禁用右上角“X”(关闭)方法:

     我们知道在每一个窗体的Form的属性中MinimizeBox(设置右上角是否有最小化框)和MaximizeBox(设置右上角是否有最大化框),可是却没有设置右上角“X”的

     所以还需要自己来写,下面是一个空窗体只禁用右上角关闭按钮的例子

     首先要加入引用using System.Runtime.InteropServices;

 

  public partial class Form1 : Form

    {

        /***************************禁用关闭按钮需要***********************/

        [DllImport("USER32.DLL")]

        public static extern int GetSystemMenu(int hwnd, int bRevert);

        [DllImport("USER32.DLL")]

        public static extern int RemoveMenu(int hMenu, int nPosition, int wFlags);

 

        const int MF_REMOVE = 0x1000;

 

        const int SC_RESTORE = 0xF120; //还原

        const int SC_MOVE = 0xF010; //移动

        const int SC_SIZE = 0xF000; //大小

        const int SC_MINIMIZE = 0xF020; //最小化

        const int SC_MAXIMIZE = 0xF030; //最大化

        const int SC_CLOSE = 0xF060; //关闭

 

        /******************************************************************/

}

        private void Form1_Load(object sender, EventArgs e)

        {

            /***************************禁用关闭按钮需要***********************/

            int hMenu = GetSystemMenu(this.Handle.ToInt32(), 0);

            RemoveMenu(hMenu, SC_CLOSE, MF_REMOVE);

 

            /******************************************************************/

        }

       这样我们在再次运行程序的时候就会发现右上角的“X”(关闭),变成了灰色,即不可用状态,设置就完成了。

 

抱歉!评论已关闭.