C# 关闭框触发对非模态表单的验证

C# 关闭框触发对非模态表单的验证,c#,winforms,validation,controls,C#,Winforms,Validation,Controls,我有两个从公共基继承的表单类。其中一种形式称为模态,另一种称为非模态。焦点更改时需要验证,但取消表单时不需要验证。在模式窗体上选择“关闭”框后,它将正确关闭,而不会在其控件上触发任何验证。在非模式窗体上选择关闭框时,将触发验证事件。带有CausesValidation set false的Cancel按钮在这两种情况下都可以正常工作 我已尝试将非模态表单上的CausesValidation设置为false,但问题仍然存在。我应该提到的是,表格是mdi儿童 有什么想法吗 Thx.将非模态窗体的“自

我有两个从公共基继承的表单类。其中一种形式称为模态,另一种称为非模态。焦点更改时需要验证,但取消表单时不需要验证。在模式窗体上选择“关闭”框后,它将正确关闭,而不会在其控件上触发任何验证。在非模式窗体上选择关闭框时,将触发验证事件。带有CausesValidation set false的Cancel按钮在这两种情况下都可以正常工作

我已尝试将非模态表单上的CausesValidation设置为false,但问题仍然存在。我应该提到的是,表格是mdi儿童

有什么想法吗

Thx.

将非模态窗体的“自动验证”属性设置为“禁用”。这将阻止窗体隐式验证所有子控件


但是,如果以后需要验证所有子控件,可以使用Form.ValidateChildren()方法。这将强制验证所有包含的子控件。

谢谢。成功了。仍然不确定为什么非模态窗体关闭框的操作与模态窗体关闭框的操作不同wrt验证。但是,是时候继续前进了。这是故意的。引用MSDN主题中标题为“Windows窗体中的用户输入验证”的以下内容-“…此外,模式窗体在控件关闭时不会验证控件的内容。您仍然可以使用控件验证将焦点锁定到控件,但不必担心与关闭窗体相关的行为…”这个答案对我来说非常有效,特别是因为验证仍然在我预期的时候自动发生(例如,
文本框
获得焦点,然后失去焦点)。有趣的。。。当我尝试这样做时,我的验证不再自动发生。