如何阻止表单关闭并显示确认对话框?

Max*_*ard 4 .net c# winforms

我希望当用户关闭窗口时,会显示一个MessageBox并询问用户是否确定要关闭窗口.但是当我尝试时,窗口关闭,nevers向我显示MessageBox.

private void SchetsWin_FormClosing(object sender, FormClosingEventArgs e)
{
    if (e.CloseReason == CloseReason.UserClosing)
    {
        e.Cancel = true;
        MessageBox.Show("Example");
    }
}
Run Code Online (Sandbox Code Playgroud)

Lar*_*ech 8

不要为表单本身连接事件,只需覆盖OnFormClosing方法即可.至于显示确认消息以确认它,只需检查MessageBox的DialogResult的值:

protected override void OnFormClosing(FormClosingEventArgs e) {
  if (e.CloseReason == CloseReason.UserClosing) {        
    if (MessageBox.Show("Do you want to close?", 
                        "Confirm", 
                        MessageBoxButtons.YesNo,
                        MessageBoxIcon.Question) == DialogResult.No) {
      e.Cancel = true;
    }
  }
  base.OnFormClosing(e);
}
Run Code Online (Sandbox Code Playgroud)

不过要小心这样的功能 - 它有惹恼最终用户的倾向.