C#:如何取消在表单中设置为接受或取消按钮的按钮的关闭操作?

7

我在表单上有一个名为btnOK的按钮,其DialogResult属性设置为OK。该表单的AcceptButton属性设置为btnOK。因此,如果我单击该按钮,则表单会自动关闭。

现在,在btnOK_Click()方法内部,我希望能够取消关闭操作,例如,如果出现错误,我希望显示一个消息框而不关闭表单。

我该如何实现?

3个回答

12

在出错时添加:

this.DialogResult = DialogResult.None

6

我认为你不需要在按钮上设置DialogResult属性,而是直接在btnOK_Click事件中将其设置在窗体上:

private void btnOK_Click(object sender, EventArgs e)
{
    if (yeahLetsClose)
        this.DialogResult = DialogResult.OK;  // form will close with OK result
    // else --> form won't close...
}

顺便提一下,AcceptButton属性与回车键有关(当您在表单上按下回车键时,将按下AcceptButton


1
在表单关闭事件中添加一个事件处理程序。EventArgs参数应该有一个Cancel属性。

1
可以这样做,但是有些笨拙 - 需要在单击事件中设置一个标志,然后在关闭事件中读取该标志。如果这是唯一的方法,那就没问题了 - 但我正在寻找一些更少绕路的东西... - Shaul Behr
要么这样做,要么改变你的按钮工作方式,使得你的处理程序可以手动关闭或不关闭窗体,并且不依赖于AcceptButton自动功能。 - asawyer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接