为了账号安全,请及时绑定邮箱和手机立即绑定

WinForm UI验证

WinForm UI验证

森栏 2019-10-16 14:17:52
我需要在整个Winform应用程序中实施输入验证。可以输入数据的表单有很多不同,我不希望通过表单逐个控制地创建每个项目的isValid等。别人如何处理呢?我看到大多数相关文章都涉及Web Apps和/或提到了Enterprise Library Validation Application Block。现在,我承认我还没有对ELVAB进行彻底的研究,但是对于我所需要的东西似乎有些过头了。我目前的想法是编写具有各种要求的类库,并将控件作为参数传递给它。我已经有一个RegEx函数库来处理isValidZipCode之类的东西,因此这可能是我开始的地方。我想要的是一个Validate按钮,该按钮onClick循环浏览该表单页面上的所有控件并执行所需的验证。我该怎么做?
查看完整描述

3 回答

?
慕哥9229398

TA贡献1877条经验 获得超6个赞

验证已内置到WinForms库中。


每个Control派生的对象都有两个名为Validating和的事件Validated。它还具有称为的属性CausesValidation。如果将其设置为true(默认情况下为true),则控件将参与验证。否则,事实并非如此。


验证是关注的一部分。当您将焦点移到控件上时,将触发其验证事件。实际上,焦点事件是按特定顺序触发的。从MSDN:


当您使用键盘(TAB,SHIFT + TAB等),通过调用Select或SelectNextControl方法或将ContainerControl .. ::。ActiveControl属性设置为当前形式来更改焦点时,将在以下位置发生焦点事件:以下顺序:


输入

重点

离开

证实

已验证

失落的焦点

当您使用鼠标或通过调用Focus方法来更改焦点时,焦点事件将按以下顺序发生:


输入

重点

失落的焦点

离开

证实

已验证

如果CausesValidation属性设置为false,则将抑制Validating和Validated事件。


如果在Validating事件委托中将CancelEventArgs的Cancel属性设置为true,则将抑制所有通常在Validating事件之后发生的事件。


另外,ContainerControl有一个称为的方法ValidateChildren(),该方法将循环遍历包含的控件并进行验证。


查看完整回答
反对 回复 2019-10-16
  • 3 回答
  • 0 关注
  • 577 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信