C# 如何防止窗体关闭并显示确认对话框?
我希望当用户关闭窗口时,会出现一个消息框,询问用户是否确定要关闭窗口。但当我尝试时,窗口刚好关闭,从不显示MessageBoxC# 如何防止窗体关闭并显示确认对话框?,c#,.net,winforms,C#,.net,Winforms,我希望当用户关闭窗口时,会出现一个消息框,询问用户是否确定要关闭窗口。但当我尝试时,窗口刚好关闭,从不显示MessageBox private void SchetsWin_FormClosing(object sender, FormClosingEventArgs e) { if (e.CloseReason == CloseReason.UserClosing) { e.Cancel = true; MessageBox.Show("Exam
private void SchetsWin_FormClosing(object sender, FormClosingEventArgs e)
{
if (e.CloseReason == CloseReason.UserClosing)
{
e.Cancel = true;
MessageBox.Show("Example");
}
}
只需重写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);
}
不过,要小心使用这样的函数——它有一种让最终用户恼火的倾向
FormClosing(FormClosingEventArgs e)时受保护的覆盖无效
该事件是否连接到表单?无论是通过设计器还是在代码中,都必须有
SchetsWin.FormClosing+=SchetsWin\u FormClosing你能调试e.CloseReason吗?也许这只是另一个比你想象的。。
{
if (MessageBox.Show("Are you sure you want to Close?","Confirm",MessageBoxButtons.YesNo,MessageBoxIcon.Question) == DialogResult.No)
{
e.Cancel = true;
}
}