同时验证C#窗体上的多个文本框

Edw*_*win 10 c# validation winforms

我有一个包含多个文本框和其他控件的表单.我正在使用errorprovider控件,我在每个需要验证的文本框上连接了验证事件.当控件将焦点转移到另一个控件时,会发生Validating事件.因此,当您使用Tab键移动当前控件或使用鼠标1单击另一个控件时,会发生该事件.我发现这非常烦人,只是举个例子,如果我打开这个winform,然后立即尝试关闭它,它不会让我,因为验证会触发抱怨第一个文本框没有输入文本.

我想要的行为是使用errorprovider,我怎么才能在单击表单的Save按钮时验证整个表单?

谢谢

Joã*_*elo 10

检查属性Form.AutoValidate.

可能的值:

  • 禁用

不会发生隐式验证.设置此值不会干扰对Validate或ValidateChildren的显式调用.

  • EnablePreventFocusChange

当控件失去焦点时,会发生隐式验证.

  • EnableAllowFocusChange

发生隐式验证,但如果验证失败,焦点仍将更改为新控件.如果验证失败,则不会触发Validated事件.

将其设置为EnableAllowFocusChange将解决打开表单的问题,并立即尝试关闭它,因为焦点将转移到"取消"按钮.

如果要完全控制验证,可以将其设置为Disable并使用Form.Validate和执行手动验证Form.ValidateChildren.我不是100%肯定,但我相信Form.ValidateChildren不会触发放置在控件内的控件的验证事件TabControl.