4

我希望当用户关闭窗口时,会出现一个 MessageBox 并询问用户是否确定要关闭窗口。但是当我尝试时,窗口只是关闭并且从不向我显示 MessageBox。

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

2 回答 2

9

无需为表单本身连接事件,只需覆盖 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);
}

不过要小心这样的功能——它往往会惹恼最终用户。

于 2013-10-30T20:05:25.493 回答
0

受保护的覆盖无效 OnFormClosing(FormClosingEventArgs e)

        {
       if (MessageBox.Show("Are you sure you want to Close?","Confirm",MessageBoxButtons.YesNo,MessageBoxIcon.Question) == DialogResult.No)
            {
                e.Cancel = true;
            }
        }
于 2013-11-01T05:06:45.300 回答