实例说明
MaskedTextBox控件是一个增强型的TextBox控件,支持用于接受或拒绝用户输入的声明性语法。使用MaskedTextBox控件时,通过使用Mask属性,无需在应用程序中编写任何自定义验证逻辑,即可指定一些输入限制,例如必需的输入字符和可选的输入字符,只允许字母或者允许字母和数字等。运行本实例,“年龄”文本框中只允许输入数字,“毕业时间”文本框中只允许输入日期类型。实例运行结果如图:

技术要点
实现本实例时,主要用到MaskedTextBox控件的Mask属性、ToolTip控件的ToolTipTitle属性和Show方法。下面分别进行介绍。
(1)Mask属性
此属性获取或设置运行时使用的输入掩码。其语法格式如下:
public string Mask { get; set; }
l 属性值:一个String,表示当前掩码。默认值是允许任何输入的空字符串。
MaskedTextBox控件的输入格式主要是通过掩码来控制的。将该控件的Mask属性赋予一个特殊的字符串,该字符串必须是一个MaskedTextBox控件中规定的掩码格式,这样就可以控制MaskedTextBox控件的输入格式。掩码格式由一些特殊意义的字符组成,这些特殊字符的含义如表1所示。
Mask属性掩码语言字符
|
掩码元素 |
说 明 |
|
0 |
数字,必选。此元素将接受0~9之间的任何一个数字 |
|
9 |
数字或空间,可选 |
|
# |
数字或空间,可选。如果掩码中该位置为空白,在Text属性中将把它呈现为一个空格。允许使用加号(+)和减号(-) |
|
L |
字母,必选。将输入限定为ASCII字母a-z和A-Z。此掩码元素等效于正则表达式中的 [a-zA-Z] |
|
? |
字母,可选。输入限定为ASCII字母a-z和A-Z。此掩码元素等效于正则表达式中的[a-zA-Z] |
|
& |
字符,必选。如果AsciiOnly属性设置为True,此元素的行为将与“L”元素类似 |
|
C |
字符,可选。任何非控制字符。如果AsciiOnly属性设置为True,此元素的行为将类似于“?”元素 |
|
A |
字母数字,可选。如果将AsciiOnly属性设置为True,则它接受的惟一字符是ASCII字母a-z 和A-Z |
|
a |
字母数字,可选。如果将AsciiOnly属性设置为True,则它接受的惟一字符是ASCII字母a-z 和A-Z |
|
. |
小数点占位符。使用的实际显示字符将是相应于格式提供程序的小数点占位符,格式提供程序由控件的FormatProvider属性决定 |
|
, |
千分位占位符。使用的实际显示字符将是相应于格式提供程序的千分位占位符,格式提供程序由控件的FormatProvider属性决定 |
|
: |
时间分隔符。使用的实际显示字符将是相应于格式提供程序的时间占位符,格式提供程序由控件的FormatProvider属性决定 |
|
/ |
日期分隔符。使用的实际显示字符将是相应于格式提供程序的日期占位符,格式提供程序由控件的FormatProvider属性决定 |
|
$ |
货币符号。显示的实际字符将是相应于格式提供程序的货币符号,格式提供程序由控件的FormatProvider属性决定 |
|
< |
转换为小写。将后续所有字符都转换为小写 |
|
> |
转换为大写。将后续所有字符都转换为大写 |
|
| |
禁用前一个大写转换或小写转换 |
|
\ |
转义。对掩码字符进行转义,将其转变为原义字符。“\\”是反斜杠的转义序列 |
|
其他所有字符 |
原义字符。所有非掩码元素都将原样出现在MaskedTextBox控件中。原义字符在运行时始终占据掩码中的一个固定位置,用户不能移动或删除该字符 |
(2)ToolTip控件的ToolTipTitle 属性
此属性获取或设置工具提示窗口的标题。其语法格式如下:
public string ToolTipTitle { get; set; }
属性值:包含窗口标题的String。
注意:该标题在窗口中作为一行粗体文本显示在标准的工具提示控件说明文本的上方。通常,标题只用于区分窗体上不同类别的控件,或作为较长控件说明的简介。
(3)ToolTip控件的Show方法
此方法设置与工具提示关联的文本,然后显示该工具提示。其语法格式如下:
public void Show (string text,IWin32Window window,int duration)
参数说明如下。
l text:包含新工具提示文本的String。
l window:要显示控件的名称。
l duration:包含工具提示持续显示时间(以毫秒为单位)的Int32。
实现过程
(1)新建一个Windows应用程序,将其命名为MaskedTextBoxStraightForwardUtility,默认窗体为Form1。
(2)在Form1窗体中添加两个MaskedTextBox控件、一个ToolTip控件和一个Button控件。
(3)程序主要代码。
设置MaskedTextBox控件的Mask属性和ValidatingTyp属性的实现代码如下:
private void Form1_Load(object sender, EventArgs e)
{
maskedTextBox1.Mask = "00"; //只能输入数字
maskedTextBox2.ValidatingType=typeof(System.DateTime); //只能输入日期
}
格式输入不正确,给出提示的实现代码如下:
private void maskedTextBox1_MaskInputRejected(object sender, MaskInputRejectedEventArgs e)
{
toolTip1.ToolTipTitle = "年龄录入"; //设置工具提示的标题
toolTip1.Show("年龄只能录入数字", maskedTextBox1, maskedTextBox1.Location, 5000); //设置工具提示的内容
maskedTextBox1.SelectAll( ); //选定文本框中的所有文本
maskedTextBox1.SelectionStart = 0; //设置文本框中选定文本的起点
maskedTextBox1.Focus( ); //设置控件的焦点
}
private void maskedTextBox2_TypeValidationCompleted(object sender, TypeValidationEventArgs e)
{
if (!e.IsValidInput) //当数据类型不正确时
{
toolTip1.ToolTipTitle = "日期录入"; //设置工具提示的标题
toolTip1.Show("录入日期格式不正确 ", maskedTextBox1, 5000); //设置工具提示的内容
e.Cancel = true; //设置取消事件的值为true
}
}