c# - 禁止用户关闭表单

标签 c# forms

我有一个名为 Form_Main 的主窗体,当有人想要关闭它时,它将关闭整个应用程序(我所说的整个应用程序也意味着退出其他窗体)。因此,我准备了一个是/否消息框,询问用户是否真的要退出表单。这是我所在的位置:

private void Form_Main_FormClosed(object sender, FormClosedEventArgs e)
{
      DialogResult result = MessageBox.Show("Are you sure?", "Confirmation", MessageBoxButtons.OKCancel);
      if (result == DialogResult.OK)
      {
          Environment.Exit(1);
      }
      else
      {
          //does nothing
      }
}

“确定”按钮有效。但是当用户点击“取消”时,Form_Main 被关闭,但应用程序仍在运行(其他窗体未受影响)。我应该用什么替换 //does nothing

最佳答案

使用FormClosing事件(而不是FormClosed),然后设置e.Cancel = true:

private void Form_Main_FormClosing(object sender, FormClosingEventArgs e)
{
    var result = MessageBox.Show("Are you sure?", "Confirmation", MessageBoxButtons.OKCancel);

    e.Cancel = (result != DialogResult.OK);
}

FormClosing 事件发生在表单实际关闭之前,因此您仍然有机会取消它。当您到达 FormClosed 事件时,为时已晚。

关于c# - 禁止用户关闭表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22350330/

相关文章:

c# - Linq to SQL 通用存储库模式更新问题

c# - 从 Core 2.0 更新到 3.1.1 后响应正文为空

forms - 有没有办法在 HTML5 中本地化输入类型 ="date"

css - 如何使用表单外的按钮伪造提交

java的synchronized关键字的C#版本?

c# - 从父子节点集合中查找死节点

forms - Symfony 6 - 访问 Twig 模板中的 CollectionType 字段

c# - C#Timer不会耗尽以形成卡住

c# - 动画不表现自己

html - 灯塔错误 : "Form elements do not have associated labels"