我需要在整个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(),该方法将循环遍历包含的控件并进行验证。
- 3 回答
- 0 关注
- 604 浏览
添加回答
举报
0/150
提交
取消