掩码控件还是比较常用的,一下是摘自msdn的掩码元素表:
掩码元素 | 说明 |
---|---|
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 中。原义字符在运行时始终占据掩码中的一个固定位置,用户不能移动或删除该字符。 |
我所纠结的地方在于掩码元素表中的0和9的“必选”和“可选”是什么意思,如果只是单纯的设置下MASK属性完全看不出区别,为了看出区别我设置了maskedTextBox1_TypeValidationCompleted事件:
private void maskedTextBox1_TypeValidationCompleted(object sender, TypeValidationEventArgs e)
{
if (!e.IsValidInput)
{
toolTip1.ToolTipTitle = "Invalid Date";
toolTip1.Show("The data you supplied must be a valid date in the format mm/dd/yyyy.", maskedTextBox1, 0, -20, 5000);
}
else
{
DateTime userDate = (DateTime)e.ReturnValue;
if (userDate < DateTime.Now)
{
toolTip1.ToolTipTitle = "Invalid Date";
toolTip1.Show("The date in this field must be greater than today's date.", maskedTextBox1, 0, -20, 5000);
e.Cancel = true;
}
}
}
Form_Load事件中:
maskedTextBox1.ValidatingType=typeof(System.DateTime);maskedTextBox1.TypeValidationCompleted+=new TypeValidationEventHandler(maskedTextBox1_TypeValidationCompleted);maskedTextBox1.KeyDown+=new KeyEventHandler(maskedTextBox1_KeyDown);
再添加KeyDown事件:
private void maskedTextBox1_KeyDown(object sender, KeyEventArgs e){toolTip1.Hide(maskedTextBox1);}
这样再设置下MASK属性就是能看出“必选”和“可选”的区别了。
参考自msdn.