通过 e.CloseResult 方法没用,因为我提出的两种情况都属于 UserClosing 的内容,还有其他的办法吗(⊙_⊙?)

解决方案 »

  1.   

    楼主,右上角的X也会调用Close事件的
      

  2.   

    调用Close事件的时候设置一个bool型的成员变量。
    点x的时候显然系统不会自动设置,就判断出来了。
      

  3.   

    可以通过Message来判断,WinForm的窗体,继承了MFC的消息机制,
    系统Message里有对X点击关闭,和双击关闭等各种关闭的分类。
    至于代码么,就不写了,百度一下全都在。
      

  4.   

    WinForms继承MFC,这不是乱扯嘛。
      

  5.   


      switch (e.CloseReason)
                    {
                        case CloseReason.ApplicationExitCall:
                            AppExitReason("应用程序exit退出");
                            break;
                        case CloseReason.FormOwnerClosing:
                            AppExitReason("窗体的所有者退出,导致子窗体关闭");
                            break;
                        case CloseReason.MdiFormClosing:
                            AppExitReason("Mdi父窗体关闭,导致子窗体关闭");
                            break;
                        case CloseReason.TaskManagerClosing:
                            AppExitReason("任务管理器关闭窗体");
                            break;
                        case CloseReason.UserClosing:
                            AppExitReason("用户通过UI关闭窗体");
                            break;
                        case CloseReason.WindowsShutDown:
                            AppExitReason("关机导致应用程序关闭");
                            break;
                        case CloseReason.None:
                            AppExitReason("未知原因导致窗体窗体");
                            break;
                        default:
                            AppExitReason("未知原因导致窗体窗体");
                            break;                }
      

  6.   

    [align=right]
    别太较真嘛,你明白我的意思的。