分享

Winform判断窗体程序需要判断窗体是由代码关闭还是通过点击右上角上X号关闭

 kingjae 2015-06-09

程序需要判断窗体是由代码关闭还是通过点击右上角上X号关闭
FormCloseing事件中e.CloseReason可以获取关闭原因
CloseReason枚举如下:

None 关闭原因未定义或未能确定
WindowsShutDown操作系统正在关闭所有应用程序以便准备关机
MdiFormClosing此多文档界面(UI)窗体的父窗体正在关闭
userClosing 用户正在通过用户界面(UI)关闭该窗体,例如通过单击窗体“X”关闭按钮,通过调用this.Close(),或通过Alt+F4等方式关闭。
TaskManagerClosing Windows任务管理器正在关闭程序
FormOwnerClosing 所有者窗体正在关闭
ApplicatonExitCall Applicaton类的Exit方法被调用。

this.close和点击“X”按钮的CloseReason是一样的,现在要区分this.close和点击“X”号怎么办呢?
使用消息,代码如下:

 protected override void WndProc(ref Message msg)
        {
            const int WM_SYSCOMMAND = 0x0112;
            const int SC_CLOSE = 0xF060;
            if (msg.Msg == WM_SYSCOMMAND && ((int)msg.WParam == SC_CLOSE))
            {
                // 点击winform右上关闭按钮
                // 加入想要的逻辑处理
                Application.Exit();
            }
            base.WndProc(ref msg);
        }

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多