winform 窗体关闭原因的枚举类型

枚举值解释:

  1. None - 无特定原因

    • 默认值,表示没有明确的关闭原因或原因未知

  2. WindowsShutDown - Windows系统关闭

    • 当操作系统正在关机或重启时触发

    • 这是系统级事件,应用程序通常需要保存数据并快速响应

  3. MdiFormClosing - MDI父窗体关闭

    • 在多文档界面(MDI)应用程序中,当父窗体关闭时,所有子窗体也会关闭

  4. UserClosing - 用户关闭

    • 最常见的关闭原因

    • 用户点击了窗体的关闭按钮(右上角的"X")

    • 用户按下了Alt+F4组合键

    • 用户从系统菜单中选择"关闭"

  5. TaskManagerClosing - 任务管理器关闭

    • 当用户通过任务管理器强制结束应用程序时触发

    • 应用程序可能没有机会执行正常的清理操作

  6. FormOwnerClosing - 窗体所有者关闭

    • 当窗体的所有者(Owner)关闭时触发

    • 非MDI应用程序中,一个窗体关闭可能导致其拥有的其他窗体也关闭

  7. ApplicationExitCall - 应用程序退出调用

    • 当代码中显式调用Application.Exit()方法时触发

    • 这是程序化的退出方式

      • private void Form_FormClosing(object sender, FormClosingEventArgs e)
        {
            // 获取关闭原因
            CloseReason reason = e.CloseReason;
            
            switch (reason)
            {
                case CloseReason.WindowsShutDown:
                    // 系统关机,需要快速保存数据
                    SaveImportantData();
                    break;
                    
                case CloseReason.UserClosing:
                    // 用户主动关闭,询问是否保存
                    if (MessageBox.Show("是否保存更改?", "确认", 
                        MessageBoxButtons.YesNo) == DialogResult.Yes)
                    {
                        SaveData();
                    }
                    break;
                    
                case CloseReason.ApplicationExitCall:
                    // 程序化退出,直接关闭
                    break;
                    
                default:
                    // 其他情况处理
                    break;
            }
        }
posted @ 2026-01-21 16:01  家煜宝宝  阅读(7)  评论(0)    收藏  举报