您的位置:首页 > 其它

WinForm窗体一次性数据合法性验证

2005-04-04 20:59 281 查看
在Windows窗体编程中,不知道大家用过控件的Tag属性没有,Tag属性代表与控件关

联的用户定义数据,每个控件都有Tag属性,可以结合控件Tag属性以及正则表达式

进行数据合法性验证。方法如下:

 

1、数据无论是什么类型,录入可以全部采用文本框录入,制定数据验证的规则:

 

Tag属性代表与控件关联的用户定义数据,此处用来一次性验证窗体上的所有文本框

控件的数据合法性。

 

TextBox控件Tag属性设置如下:

 

        I.如果TextBox中要填入的是数字,该TextBox控件的Tag属性设置格式为:

 

                1;控件名称;1;0,999;2;

 

                说明:

 

                        1 表明要填入的是数字

 

                        控件名称:可以是字段名称或者文本框前面的Label的文本

 

                        1 表明是否必填,如果不是必填则用 0

 

                        0,999 表明数字的取值范围

 

                        2 表明小数位数

 

        II.如果TextBox中要填入的是字符串,该TextBox控件的Tag属性设置格式为:

 

                2;控件名称;1;1,20;

 

                说明:

 

                        2 表明要填入的是字符串

 

                        控件名称:可以是字段名称或者文本框前面的Label的文本

 

                        1 表明是否必填,如果不是必填则用 0

 

                        1,20 表明字符串的的最小和最大长度

 

        III.如果TextBox中要填入的是日期,该TextBox控件的Tag属性设置格式为:

 

                3;控件名称;1;2000-1-1,2004-1-1;

 

                说明:

 

                        3 表明要填入的是日期

 

                        控件名称:可以是字段名称或者文本框前面的Label的文本

 

                        1 表明是否必填,如果不是必填则用 0

 

                        2000-1-1,2004-1-1 表明允许的最小日期和最大日期

 

2、实现一个集合类sysErrors(用于存放所有在控件数据合法性验证时返回的错误

),一个sysErrors类中可以包含多条sysError(一条验证控件数据合法性时产生的

错误),实现sysErrors的Merge方法(类似与DataSet的Merge方法,用于合并sysE

rrors,将两个错误集合合并到一起)3、实现一个Validate类,在此类中实现如下

方法:

 

 

                         所有验证控件的函数都是调用此函数来执行验证。

 

                    步骤:判断由控件的Tag属性判断控件中输入数据的数据类型,

 

                         使用正则表达式匹配验证检查控件Tag属性设置是否正确,

 

                         对于应输入字符串的控件:

 

                                判断是否必填;

 

                                判断是否有非法字符;

 

                                判断字符最大最小长度;

 

                         对于应输入字符串的控件:

 

                                是否必填;

 

                                是否有非法字符(此处必须全部为数字);

 

                                允许的最大值和最小值验证;

 

                                小数位数验证;

 

                                非0验证;

 

                        对于应输入日期的控件:

 

                                ……

 

 

                a.sysError Validate(System.Windows.Forms.Control ctl)

 

 

                b.sysErrors ValidateControl(System.Windows.Forms.Control ctl)

 

                public Sys.sysErrors

validateControl(System.Windows.Forms.Control ctl)

 

 

 

 

                c.sysErrors ValidateForm(System.Windows.Forms.Form frm)

 

                public Sys.sysErrors validateForm(System.Windows.Forms.Form frm)

 

                 

                        if(_Errors!=null) _Errors.Dispose();

 

                        _Errors =new HEWin.Sys.sysErrors();

 

                        foreach(System.Windows.Forms.Control ctl in

frm.Controls)

 

                                _Errors.MergeErrors(validateControl(ctl));

 

                        return _Errors;

 

                }

 

4、在窗体上要保存数据时为控件设置Tag属性,要保存数据时,先实例化一个sysE

rrors对象用于收集所有验证错误,调用ValidateForm方法将所有出现的错误写入s

ysErrors,如果sysErrors的Count属性为0,继续保存数据的代码,否则调用sysEr

rors的DisplayError方法显示所有错误给用户,还可以在为添加Validate类中添加

代码将窗体上出现第一个合法性验证错误的控件聚焦。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: