2010-05-24 52 views
3

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

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

任何想法?

Thx。

回答

3

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

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

+0

谢谢你。这工作。仍然不确定为什么非模态窗体Close Box的操作与通过验证的模态窗体不同。但是有时间继续前进。 – Governor 2010-05-27 20:29:39

+0

这是设计。从MSDN主题中标题为“Windows Forms中的用户输入验证”的内容 - “....此外,模式窗体在关闭时不会验证控件的内容。您仍然可以使用控件验证将焦点锁定到控制,但你不必关心与关闭窗体相关的行为....“ – Rajarshi 2010-05-28 03:28:04

+0

这个答案对我很好,特别是因为验证仍然会在我期望的时候自动发生(例如当一个'TextBox'获得然后失去了重点)。 – Pat 2010-08-04 19:34:46