MaskedTextBox类是一个增强型的TextBox控件,它支持用于接受或拒绝用户输入的声明性语法。通过使用Mask属性,无需在应用程序中编写任何自定义验证逻辑,即可指定下列输入:
当MaskedTextBox控件在运行时显示时,会将掩码表示为一系列提示字符和可选的原义字符。表示一个必需或可选输入的每个 可编辑掩码位置都显示为单个提示字符。例如,数字符号(#) 通常用作数字字符输入的占位符。可以使用PromptChar属性来指定自定义提示字符。HidePromptOnLeave属性决定当控件失去输入焦点时用户能否看到提示字符。
当用户在掩码文本框中键入内容时,有效的输入字符将按顺序替换其各自的提示字符。如果用户键入无效的字符,将不会发生替换。在这种情况下,如果BeepOnError属性设置为true,将发出警告声,并引发MaskInputRejected事件。可以通过处理此事件来提供您自己的自定义错误处理逻辑。
如果当前插入点位于原义字符处,用户将有多种选择:
可以使用MaskFull属性来验证用户是否输入了所有必需的输入内容。Text属性将始终检索按照掩码和TextMaskFormat属性设置格式的用户输入。
实际上,MaskedTextBox控件将所有掩码处理工作交给由MaskedTextProvider属性指定的System.ComponentModel.MaskedTextProvider类来完成。此标准提供程序支持除代理项和纵向组合字符以外的所有Unicode 字符;但是,可以使用AsciiOnly属性将输入限定为字符集a-z、A-Z 和 0-9 内的字符。
掩码不能保证用户输入一定会表示给定类型的有效值,例如,输入的年龄值可能为-9。通过将值的类型的实例赋给ValidatingType属性,可以确保用户输入表示一个有效值。通过监视TypeValidationCompleted事件,可以检测当MaskedTextBox包含无效值时,用户是否将焦点从该控件移开。如果键入验证成功,可以通过TypeValidationEventArgs参数的ReturnValue属性使用表示该值的对象。
与TextBox控件一样,几个通用键盘快捷键不能用于MaskedTextBox。尤其是Ctrl-R(右对齐文本)、Ctrl-L(左对齐文本)和 Ctrl-E(文本居中)都无效。
2.掩码元素一览
掩码元素 | 说明 |
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 中。原义字符在运行时始终占据掩码中的一个固定位置,用户不能移动或删除该字符。 |