禁止用户关闭表单

时间:2014-03-12 11:38:53

标签: c# forms

我有一个名为Form_Main的主要表单,当有人想关闭它时,它会关闭整个应用程序(整个应用程序我也意味着退出其他表单)。因此,我准备了一个是/否MessageBox,询问用户是否真的想要退出表单。这就是我所在的地方:

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将关闭,但应用程序仍在运行(其他表单未触及)。我应该用{<1}}替换什么?

1 个答案:

答案 0 :(得分:6)

使用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);
}

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