1

我有Form一个“Ok”Button被分配为AcceptButton. 当我点击这个ButtonEnter按键时,Form它会自动关闭,如预期的那样。在事件下,OkButtonClick我编写了一个例程来检查所有字段是否都正确填写,如果不是通过MessageBox. 问题是关闭后MessageBox自动Form关闭,但我希望它保持打开状态以允许用户更正他的输入。在这种情况下,我应该怎么做才能防止Form被关闭?

4

1 回答 1

2

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

 this.DialogResult = DialogResult.None;

内部工作或多或少如下:

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

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

于 2020-11-27T10:30:58.263 回答