整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

使用ErrorProvider组件验证文本框输入-C#学习进阶

实例实现ErrorProvider组件对Textbox控件的输入验证,在一些程序录入中应用ErrorProvider组件能提高录入数据的正确性。运行本程序,登录名输入“mr”,密码为“Mrsoft”,单击“确定”按钮,如果密码输入错误,ErrorProvider组件在密码文本框旁会闪烁图标,给出提示,效果如图所示。

技术要点

实现本实例功能主要用到了ErrorProvider组件的Blinkbate属性、Blinkstyle属性、SetError方法和TextBox文本框的Validating事件。下面分别进行介绍。

(1)Blinkstyle属性

此属性获取或设置一个值,该值指示错误图标的闪烁时间。其语法格式如下:

public ErrorBlinkStyle BlinkStyle { get; set; }

属性值:ErrorBlinkStyle值之一。默认为BlinkIfDifferentError。ErrorBlinkStyle属性值及说明如表所示。

ErrorBlinkStyle属性值及说明

属 性 值

说 明

AlwaysBlink

当错误图标第一次显示时,或者当为控件设置了错误描述字符串并且错误图标已经显示时,总是闪烁

BlinkIfDifferentError

当图标已经显示并且为控件设置了新的错误字符串时闪烁

NeverBlink

错误图标从不闪烁

(2)Blinkbate属性

此属性获取或设置错误图标的闪烁速率。其语法格式如下:

public int BlinkRate { get; set; }

属性值:错误图标的闪烁速率(以毫秒为单位)。默认为250毫秒。

注意:错误图标按指定速率闪烁。将BlinkStyle设置为NeverBlink时,表示闪烁速率为0,即不闪烁。

(3)SetError方法

此方法将Error属性设置为指定的TextWriter对象。其语法格式如下:

public static void SetError (TextWriter newError)

参数说明如下。

newError:一个TextWriter流,是新的标准错误输出。

(4)Validating事件

此事件在控件正在验证时发生。其语法格式如下:

public event CancelEventHandler Validating

实现过程

(1)新建一个Windows应用程序,将其命名为ExecuteAsynchronismFunction,默认窗体为Form1。

(2)在Form1窗体中,主要添加两个ErrorProvider组件,将其BlinkRate属性设置为100,BlinkStyle属性值设置为AlwaysBlink,该控件用于验证输入是否正确;添加两个TextBox控件,用于输入文本;添加两个Button控件,用于引发ErrorProvider组件验证。

(3)主要程序代码。

定义一个带圆角的Textbox,没有用win32 Api,相对比用Api要好一点。注意窗口AutoScaleMode设置为None.

例说明

当平台进行注册时,都需要填写用户名和登录密码。在输入登录密码时,需要重复输入一次。在重复输入文本框中,应该禁用粘贴功能,防止用户密码输入错误的情况。本实例可以实现这个功能,实例运行结果如图:

技术要点

本实例主要用到自定义类CustomTextBoxGroup,在该类的构造方法中,对控件的位置和大小进行设定。在处理屏蔽粘贴的消息时用到方法WndProc。

实现过程

(1)创建一个项目,将其命名为ShieldPasteFunction,修改默认窗体为ShieldPasteFunction。

(2)主要程序代码。

本程序在加载窗体时,声明一个自定义类CustomTextBoxGroup的对象,并为其指定父容器,然后在当前窗体中添加该控件。代码如下:

TextBox NoStiky = new CustomTextBoxGroup();                    //声明一个自定义类CustomTextBoxGroup的对象
private void ShieldPasteFunction_Load(object sender,EventArgs e)
{
    this.NoStiky.Parent = this;                                 //设定自定义控件的父容器为当前窗口
    this.Controls.Add(this.NoStiky);                        //在当前窗体中添加自定义控件
}

在自定义类CustomTextBoxGroup的构造函数中,定义控件的位置和大小。代码如下:

public CustomTextBoxGroup()

{

    this.Top = 63;                           //设定自定义控件上边缘与其容器的工作区上边缘之间的距离

    this.Left = 105;                         //设定自定义控件左边缘与其容器的工作区左边缘之间的距离

    this.Width = 178;                        //设定自定义控件的宽度

    this.Height = 50;                          //设定自定义控件的高度

}

重载Windows处理消息的函数WndProc,截获有关粘贴的信息进行屏蔽。代码如下: