在 C# 中的窗口窗体应用程序中关闭窗口时发出警报 [重复]

Posted

技术标签:

【中文标题】在 C# 中的窗口窗体应用程序中关闭窗口时发出警报 [重复]【英文标题】:Alert on Closing window in Window Form Application in C# [duplicate] 【发布时间】:2015-03-05 04:00:48 【问题描述】:

我希望当用户通过单击 (X) 或按 ESC 键或按 ALT+ 关闭(窗口窗体应用程序,C#)中的窗口时F4,将显示一个警报,即一个对话框(包含两个按钮 OK 和 CANCEL)。 怎么办?

【问题讨论】:

到目前为止你尝试了什么? 使用Form.FormClosing - msdn.microsoft.com/en-us/library/… 【参考方案1】:

你可以通过简单的搜索找到它!

处理表单的Closing 事件:

this.Closing += OnClosing; // For example put this in the constructor of your form

private void OnClosing(object sender, CancelEventArgs cancelEventArgs)

        string msg = "Do you want to close this?";
        DialogResult result = MessageBox.Show(msg, "Close Confirmation",
            MessageBoxButtons.YesNo/*Cancel*/, MessageBoxIcon.Question);
        if (result == DialogResult.Yes)
            /* Do something */;
        else if (result == DialogResult.No)
            cancelEventArgs.Cancel = false;


【讨论】:

… 并设置cancelEventArgs.Cancel 取消关闭。 是的,很好,但你不认为这个答案错过了最重要的部分吗? @AliSepehri.Kh 谢谢老兄的工作,干得好:) @AliSepehri.Kh 你的帮助很大,我从过去 5 个小时开始一直在努力,但一无所获。非常感谢老兄:) 请记住,cancelEventArgs 还包含关闭事件的原因。有时拒绝系统关闭请求并不是非常可取的。【参考方案2】:

您可以在应用程序级别执行此操作

    [STAThread]
    static void Main()
    
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.ApplicationExit += Application_ApplicationExit;
        AppDomain.CurrentDomain.ProcessExit += Application_ApplicationExit;
        Application.Run(new Form1());
    
    static void Application_ApplicationExit(object sender, EventArgs e)
    
        //Do something
    

【讨论】:

以上是关于在 C# 中的窗口窗体应用程序中关闭窗口时发出警报 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在机器人框架中关闭浏览器插件警报

发出警报后,我无法在我的反应本机应用程序中关闭我的键盘

如何在 Python / Selenium 中关闭麦克风/相机弹出窗口?

winform中关闭退出和打开新窗口的几种方式

vb窗体中的resize是啥事件?

在QT中关闭窗口之前获取应用程序退出信号