方便winform中的数据验证,制作一个使用正则表达式验证数据的复合控件

刚接触winform开发,为了实现一个简捷的数据验证制作了一个使用正则表达式验证数据的复合控件RegexTextBox
先帖张示例图

大家可以看到这就类似asp.net中验证控件的效果了,此控件提供6个关于数据验证的属性

ErrorView,设置错误提示的样式
Expression,设置要匹配的正则表达式
IsAllowEmpty,设置控件的值是否允许为空
IsSelectAll,设置单击控件时是否全选其文本
KeepFocus,设置验证未通过时是否保持焦点,如果此项设为True,则未通过验证时鼠标焦点无法跳出此控件
SetError,设置验证未通过时提示的内容

控件大概的实现过程挺简单,后面提供全部源码(C#,VS2005,.Net Framework2.0)下载,有详细注释,还是在这里说一下,此控件继承自TextBox,在Validating,Click事件中使用正则表达式进行数据验证,不通过验证则在旁边按ErrorView属性设置来添加ErrorProvider控件或Label控件来显示SetError属性错误提示


下面是控件源码
RegexTextBox.cs

RegexTextBox.cs


在说一下使用方法,此文刚开始的示例中button2的Click事件里要按范围来验证指定范围的RegexTextBox是否都已经通过了验证,这里的指定范围是指Control.ControlCollection类型的参数

private void button1_Click(object sender, EventArgs e)
        {
            BaseGlobals b 
= new BaseGlobals();
            
if (b.RegexTextBoxIsValidated(this.Controls))
            {
                MessageBox.Show(
"this.Controls通过");
            }
        }

BaseGlobals.cs的代码如下

好了到这里整个验证方案就完成了,每次有数据验证时只要按如下代码就可以了

BaseGlobals b = new BaseGlobals();
            if (b.RegexTextBoxIsValidated(this.Controls))
            {
                MessageBox.Show("this.Controls通过");
            }

提供此控件和示例全部源码下载RegexTextBox和示例(源码)环境C#,VS2005,.Net Framework2.0

刚接触winform开发,还请大家多给意见:)

原文地址:https://www.cnblogs.com/dikongpulu/p/897375.html