如何防止在C#中按下AcceptButton时窗体被关闭

How to prevent the form of being closed when AcceptButton is pressed in C#

我有一个 Form,它有一个“Ok”Button,被分配为 AcceptButton。当我单击此 Button 或按 Enter 键时,Form 会自动关闭,如预期的那样。 在事件 OkButtonClick 下,我编写了一个例程来检查是否所有字段都已正确填写,如果没有,则会通过 MessageBox 抛出错误消息。问题是关闭 MessageBoxForm 会自动关闭,但我希望它保持打开状态以允许用户更正他的输入。在这种情况下,我应该如何防止Form被关闭?

在该点击事件中,如果您的验证失败,请添加此行

 this.DialogResult = DialogResult.None;

内部工作大致如下:

一般规则是,如果 DialogResult 属性 设置为除 DialogResult.None 之外的任何值,表单引擎会自动关闭表单。

当表单引擎收到按钮点击时,引擎会将表单 DialogResult 属性 设置为按钮 DialogResult 属性 上的值,然后调用事件处理程序。如果您什么都不做,引擎会在事件处理程序的出口查看表单 DialogResult 属性 并做出相应的反应。因此,如果您想抵消默认行为,则需要将 DialogResult 设置回 None。