WinForm UI验证

我需要在整个Winform应用程序中实施输入验证。可以输入数据的表单有很多不同,我不希望通过表单逐个控制地创建每个项目的isValid等。别人如何处理呢?


我看到大多数相关文章都涉及Web Apps和/或提到了Enterprise Library Validation Application Block。现在,我承认我还没有对ELVAB进行彻底的研究,但是对于我所需要的东西似乎有些过头了。我目前的想法是编写具有各种要求的类库,并将控件作为参数传递给它。我已经有一个RegEx函数库来处理isValidZipCode之类的东西,因此这可能是我开始的地方。


我想要的是一个Validate按钮,该按钮onClick循环浏览该表单页面上的所有控件并执行所需的验证。我该怎么做?


森栏
浏览 605回答 3
3回答

慕哥9229398

验证已内置到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(),该方法将循环遍历包含的控件并进行验证。
打开App,查看更多内容
随时随地看视频慕课网APP