MaskedTextBox 掩码文本框
MaskedTextBox 是一种特殊的文本框,使用一个掩码来规范用户的输入。掩码可以自定义,类似一种格式模板的方式来约束用户的输入内容。比如约定电话号码、手机号码、身份证、日期等格式。

设置掩码
在属性窗口中点击 Mask 属性右侧的 ... 按钮,会弹出掩码选择对话框,内置了常用的掩码格式:
| 内置掩码 | 说明 |
|---|---|
| 电话号码 | (999) 000-0000 |
| 日期(短) | 00/00/0000 |
| 日期(长) | 00/00/0000 90:00 |
| 身份证号 | 000000-00000000-000A |
| 邮政编码 | 000000 |
| 社会安全号 | 000-00-0000 |
也可以手动输入自定义掩码字符串。
掩码字符说明
| 字符 | 说明 |
|---|---|
0 | 必须输入数字(0-9) |
9 | 可选输入数字 |
# | 可选输入数字或空格,允许 + - |
L | 必须输入字母(a-z、A-Z) |
? | 可选输入字母 |
& | 必须输入任意字符 |
C | 可选输入任意字符 |
A | 必须输入字母或数字 |
a | 可选输入字母或数字 |
. | 小数点占位符 |
, | 千分位占位符 |
: | 时间分隔符 |
/ | 日期分隔符 |
$ | 货币符号 |
< | 后续字符转为小写 |
> | 后续字符转为大写 |
| ` | ` |
| “ | 转义字符,将下一字符作为字面量 |
{ } | 重复限定符,如 99{3} 表示3位可选数字 |
自定义掩码示例
// 手机号码:11位数字
this.maskedTextBox1.Mask = "000-0000-0000";
// 日期时间
this.maskedTextBox1.Mask = "0000/00/00 90:00";
// 身份证号(18位)
this.maskedTextBox1.Mask = "000000-00000000-000A";
// 自定义格式:省份简称+城市代码
this.maskedTextBox1.Mask = "L000000";Code language: JavaScript (javascript)
获取和设置文本
// 获取用户输入的实际文本(不含掩码占位符)
string input = this.maskedTextBox1.Text;
// 获取包含掩码格式的文本
string formatted = this.maskedTextBox1.Text;
// 设置文本
this.maskedTextBox1.Text = "13812345678";Code language: JavaScript (javascript)
常用属性
| 属性 | 说明 |
|---|---|
Mask | 掩码格式字符串 |
Text | 获取或设置当前文本 |
MaskCompleted | 是否所有必填位置都已填写 |
MaskFull | 是否所有位置(包括可选)都已填写 |
PromptChar | 未输入位置的提示字符(默认 _) |
AsciiOnly | 是否只允许 ASCII 字符 |
BeepOnError | 输入不合法时是否发出提示音 |
CutCopyMaskFormat | 剪切/复制时是否包含掩码字符 |
TextMaskFormat | 获取文本时是否包含字面量和提示字符 |
this.maskedTextBox1.PromptChar = '*';
this.maskedTextBox1.BeepOnError = true;
this.maskedTextBox1.AsciiOnly = true;Code language: JavaScript (javascript)
常用事件
| 事件 | 说明 |
|---|---|
MaskInputRejected | 用户输入不符合掩码规则时触发 |
TypeValidationCompleted | 类型验证完成时触发 |
private void maskedTextBox1_MaskInputRejected(object sender, MaskInputRejectedEventArgs e)
{
MessageBox.Show("输入格式不正确,请检查!");
}Code language: JavaScript (javascript)


Previous: ListView 列表视图控件
Next: MenuStrip 菜单工具条控件