C#表单上同时验证多个文本框我有一个包含多个文本框和其他控件的表单。我正在使用errorprovider控件,并在每个需要验证的文本框上连接一个验证事件。Validating事件在控件将焦点转移到另一个控件时发生。所以当你用tab键移动当前控件或者用鼠标1点击另一个控件时,该事件发生。我觉得这非常烦人,例如,如果我打开这个winform然后立即尝试关闭它,它不会让我因为验证触发抱怨第一个文本框没有输入文本。我想要的行为是使用错误提供者,如何在单击表单的“保存”按钮时验证整个表单?谢谢检查属性Form.AutoValidate。可能的值:不会发生隐式身份验证。设置此值不会干扰对Validate或ValidateChildren的显式调用。当控件失去焦点时发生隐式验证。发生隐式验证,但如果验证失败,焦点仍会更改到新控件。如果验证失败,则不会触发Validated事件。将其设置为EnableAllowFocusChange将解决打开表单并立即尝试关闭它的问题,因为焦点将转移到“取消”按钮。如果您想完全控制验证,可以将其设置为Disable并使用Form.Validate和Form.ValidateChildren执行手动验证。我不是100%确定,但我相信Form.ValidateChildren不会触发TabControl放置的TabControlvalidation事件。将所有控件(“保存”按钮除外)上的CausesValidation属性设置为False。这将抑制除按钮之外的所有控件的验证事件。这可能不是您想要的确切行为,因为当您改变对按钮行为的关注时会发生烦人的事情,但它接近您想要的。如果这不起作用,另一种选择是在单击按钮时遍历控件并一次手动验证它们......这是MSDN链接:http://msdn.microsoft.com/en-us/library/system.windows.forms。control.causesvalidation.aspx只是为了保持更新,Jo?oAngelo说Form.ValidateChildren()不会触发内部控件的验证,比如GroupBox或TabControl。但是,您可以将ValidationContraints传递给重载的ValidateChildren(ValidationConstraints)方法并将其设置为None,其中:“验证所有子控件和这些子控件的所有子控件,而不管它们的属性设置如何。”没有办法让WinForms在保存时验证控件。与Web表单不同,没有任何“提交”或“保存”事件(至少在表单上没有)。您可以对表单进行编程使其以这种方式运行,但您将无法使用数据绑定(保存将设置模型并检查错误)。也许更好的方法是不使用对话框来显示错误(我假设你是因为你说关闭表单时出现问题)。工具提示可以提供更好的用户体验。如果用户忽略工具提示,您可以在单击“保存”时提供一个对话框。即使数据不好,他们也可以关闭表单。以上就是C#学习教程:同时验证C#窗体上多个文本框共享的所有内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。本文来自网络收集,不代表作品如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处:
