技术开发 频道

Windows Forms中通过自定义组件实现统一的数据验证


BaseCompareValidator

    到目前为止,我们的组件只能处理单个文本域的值。但在某些情况下,验证过程可能涉及多个文本域或值,比如确保文本域的值在两个值之间(RangeValidator);或比较两个文本域的值是否相等(CompareValidator)。不管哪种情况,我们都需要考虑类型检查、转换和比较等过程。这个功能应当封装在一个新的类型中:BaseCompareValidator,而RangeValidator和CompareValidator则继承自它。

    ValidationDataType是一个自定义枚举类型,在何种数据类型下进行比较验证。

RangeValidator

    如果需要确保控件的输入值在指定的范围内,RangeValidator 可以满足需要。它需要开发人员指定最大值和最小值,还有输入值的数据类型。


CompareValidator

    最后来看看CompareValidator,它用来进行控件的等值测试,可以与另一个控件的值或者指定的值进行比较。Operator属性指定了比较操作的类型,ControlToCompare和 ValueToCompare则指定了要比较的控件和指定值。如果Operator属性为DataTypeCheck,则还可以判断控件的值是否为指定类型。


完整的自定义验证组件结构


我们身在何处

    首先我们对Windows Forms中的校验机制进行了探讨,然后将这些验证逻辑封装到了几个支持设计时操作的组件,通过开发自定义验证组件来提供更为高效的验证体验(类似于ASP.NET中的验证控件)。但目前还仅限于控件级的验证。下一篇文章中将讨论如何进行窗体级的验证,届时ValidationSummary组件也会闪亮登场。

    示例代码下载:CustomValidatorSample.rar

参考:
1. Extending Windows Forms with a Custom Validation Component Library. By Michael Weinhardt
2. Windows Forms Programming in C#. By Chris Sells








0
相关文章