如何防止在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
抛出错误消息。问题是关闭 MessageBox
后 Form
会自动关闭,但我希望它保持打开状态以允许用户更正他的输入。在这种情况下,我应该如何防止Form
被关闭?
在该点击事件中,如果您的验证失败,请添加此行
this.DialogResult = DialogResult.None;
内部工作大致如下:
一般规则是,如果 DialogResult 属性 设置为除 DialogResult.None 之外的任何值,表单引擎会自动关闭表单。
当表单引擎收到按钮点击时,引擎会将表单 DialogResult 属性 设置为按钮 DialogResult 属性 上的值,然后调用事件处理程序。如果您什么都不做,引擎会在事件处理程序的出口查看表单 DialogResult 属性 并做出相应的反应。因此,如果您想抵消默认行为,则需要将 DialogResult 设置回 None。
我有一个 Form
,它有一个“Ok”Button
,被分配为 AcceptButton
。当我单击此 Button
或按 Enter
键时,Form
会自动关闭,如预期的那样。
在事件 OkButtonClick
下,我编写了一个例程来检查是否所有字段都已正确填写,如果没有,则会通过 MessageBox
抛出错误消息。问题是关闭 MessageBox
后 Form
会自动关闭,但我希望它保持打开状态以允许用户更正他的输入。在这种情况下,我应该如何防止Form
被关闭?
在该点击事件中,如果您的验证失败,请添加此行
this.DialogResult = DialogResult.None;
内部工作大致如下:
一般规则是,如果 DialogResult 属性 设置为除 DialogResult.None 之外的任何值,表单引擎会自动关闭表单。
当表单引擎收到按钮点击时,引擎会将表单 DialogResult 属性 设置为按钮 DialogResult 属性 上的值,然后调用事件处理程序。如果您什么都不做,引擎会在事件处理程序的出口查看表单 DialogResult 属性 并做出相应的反应。因此,如果您想抵消默认行为,则需要将 DialogResult 设置回 None。