关闭框触发非模态表单的验证。

3
我有两个表单类,都继承自同一个基类。其中一个表单是模态的,另一个不是。需要在焦点改变时进行验证,但在取消表单时不需要验证。当选择模态表单上的关闭框时,它会正确关闭而不会触发任何控件的验证。当选择非模态表单上的关闭框时,将触发验证事件。设置了CausesValidation为false的取消按钮在两种情况下都可以正常工作。
我尝试将非模态表单上的CausesValidation设置为false,但问题仍然存在。需要注意的是,这些表单是MDI子窗口。
有什么想法吗?
谢谢。
1个回答

3
将非模态表单的“AutoValidate”属性设置为“Disable”。这将防止表单隐式验证所有子控件。
但是,在以后的某个时候,如果您需要验证所有子控件,可以使用Form.ValidateChildren()方法。这将强制验证所有包含的子控件。

谢谢。那个有效。仍然不确定为什么非模态表单的关闭框在验证方面与模态表单不同。但是现在是时候继续了。 - Governor
这是有意为之的设计。引用MSDN主题“Windows窗体中的用户输入验证”中的以下内容 - “此外,模态窗体在关闭时不会验证控件的内容。您仍然可以使用控件验证来锁定焦点到控件,但您不必担心与关闭窗体相关的行为。” - Rajarshi
这个答案对我非常有用,特别是当我期望时(例如,当一个TextBox获得并且失去焦点时),验证仍然会自动发生。 - Pat
有趣...当我尝试这样做时,我的验证不再自动发生了。 - comecme

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