【转】MaskedTextBox总结

本文详细介绍了MaskedTextBox控件的Mask属性及掩码语言说明,包括各种掩码字符的效果和应用场景,如IP地址、电话号码、日期等的格式规范。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MaskedTextBox总结 MaskedTextBox的Mask属性中的一些掩码及其效果,网上这方面的资源不多,找了一部分,总结如下(不包括VS自带的验证):IP地址:999.999.999.999注:如果嫌那个下划线不好看,则设置PromptChar为一个空格电话号码(例010-12345678): 000-00000000日期:0000年00月00日 或00/00/0000美国模式的日期:00->L<LL-0000注:日, 月份缩写, 年,其中的 3 个字母为首字母大写、后两个字母小写的月份缩写形式。电话号码:(999)-000-0000注:区号为可选项。如果用户不想输入可选字符,则可输入空格,也可以将鼠标指针直接放在掩码中由第一个 0 表示的位置。货币:$999,999.00注:0 到 999999 范围内的货币值。货币、千分位和小数点字符将在运行时由区域性特定的等效字符替代。掩码语言说明(相当于掩码的语法)

掩码元素说明正则表达式元素
00 到 9 之间的任何一个数字。必选项。/d
9数字或空格。可选项。 [ /d]?
#数字或空格。可选项。如果此位置在掩码中保留为空,它将显示为空格。允许使用加号 (+) 和减号 (-)。[ /d+-]?
LASCII 字母。必选项。 [a-zA-Z]
?ASCII 字母。可选项。 [a-zA-Z]?
&字符。必选项。 [/p{Ll}/p{Lu}/p{Lt}/p{Lm}/p{Lo}]
C字符。可选项。 [/p{Ll}/p{Lu}/p{Lt}/p{Lm}/p{Lo}]?
A字母数字。可选项。 /W
.相应于区域性的小数点占位符。 不可用。
,相应于区域性的千分位占位符。 不可用。
:相应于区域性的时间分隔符。 不可用。
/相应于区域性的日期分隔符。 不可用。
$相应于区域性的货币符号。 不可用。
将后面的所有字符转换为小写。 不可用。
> 将后面的所有字符转换为大写。不可用。
|停止前面的大写转换或小写转换。不可用。
/对掩码字符进行转义,将它转换为原义字符。“//”是反斜杠的转义序列。 /
所有其他字符。原义字符。所有非掩码元素将在 MaskedTextBox 中以原样显示。 所有其他字符。

默认情况下,小数点 (.)、千分位 (,)、时间 (:)、日期 (/) 和货币 ($) 符号按应用程序的区域性定义显示。可使用 FormatProvider 属性强制它们显示为其他区域性的符号。在C#的WinForm应用中一般是使用掩码进行输入控制。除了使用掩码,在ASP.NET环境下的验证控件可以使用正则表达式,32种验证方式的正则表达式在我的一篇《C#中验证控件的使用方法总结一》博文中有介绍。在上一篇的《一个JavaScript计算器》中JavaScript有这样的语法进行输入验证的,即直接用正则表达式对输入进行test,确实神奇一点,以前从来没用过,代码如下(核心处是我用五角星标出来的): 

01function addNumber(tok)    //输入数值 
02  
03    with(oMemery) 
04    
05      try 
06      
07        var token; 
08        if(tok == "/b") //如果输入的是一个退格 
09          token = inBuffer.slice(0,-1);  //那么把缓存中的内容去掉一个 
10        else    
11          token = inBuffer + tok.toString();  //否则接受新输入的数字 
12        //如果数值的第一位是小数点,显示的时候要补一个0 
13        if(token.slice(0,1) == ".") token = 0 + token; 
14        //判断输入接收后的结果是否满足数值的格式:^([/d]+(/.)?[/d]*)?$,其他 
15                                                                //常用正则表达式可以参考我的《C#中验证控件的使用方法总结》的博文 
16        if(/^([/d]+(/.)?[/d]*)?$/.test(token))// ☆★☆★☆★ 
17        
18          inBuffer = token;  //如果满足,则确认接受,写入缓存 
19        
20  
21        return formatBuff(inBuffer); 
22           
23      
24      catch(ex) 
25      
26        alert(ex.message); 
27      
28    
29  }
### C#MaskedTextBox 控件的使用方法 MaskedTextBox 是一种特殊的文本框控件,它允许开发者通过掩码指定用户可以输入的内容格式。这种特性使得数据输入更加结构化并减少了错误的可能性。 #### 创建 Windows 窗体应用程序 为了展示 MaskedTextBox 的功能,先创建一个新的 Windows Forms 应用程序[^3]。 #### 设计窗体布局 在设计器中拖拽一个 `MaskedTextBox` 到窗体上,并设置其属性以适应特定的数据格式需求。例如,对于电话号码,可以选择合适的掩码模式如 `(999) 000-0000` 来限定用户的输入范围[^2]。 #### 编写代码逻辑 下面是一段简单的例子,用于配置 MaskedTextBox 并处理基本事件: ```csharp using System; using System.Windows.Forms; namespace MaskedTextBoxDemo { public partial class Form1 : Form { public Form1() { InitializeComponent(); // 设置 MaskedTextBox 属性 maskedTextBox1.Mask = "(999) 000-0000"; maskedTextBox1.PromptChar = '_'; } private void maskedTextBox1_MaskInputRejected(object sender, MaskInputRejectedEventArgs e) { MessageBox.Show($"Invalid input at position {e.Position}"); } private void buttonSubmit_Click(object sender, EventArgs e){ string phoneNumber = maskedTextBox1.Text; Console.WriteLine(phoneNumber); } } } ``` 这段代码设置了 MaskedTextBox 的掩码为美国标准电话号码格式,并指定了提示符字符 `_` 。当有无效输入发生时,将会弹出消息框告知具体位置;点击提交按钮后则打印当前填写的有效电话号码。 如果一次性粘贴多个不符合条件的字符进入 MaskedTextBox ,每遇到一次不匹配的情况都会触发 `MaskInputRejected` 事件,因此可能多次调用相应的事件处理器函数[^4]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值