功能:自动设置ip掩码,输入形如999.999.999.999的格式,并设置keydown事件,当输入.的时候,自动跳至下一栏。
方法:
1,从工具箱中拖入一个MaskedTextBox,命名为txtPACSIP;
2,在mask属性中,输入:999.999.999.999
3,在prompt属性中,将_换为空格。如果你喜欢_的话,也可以不用换。
4,创建KeyDown事件,附以下代码:
当然, 你如果想将tab键也实现自动跳至下一栏的话,多加个条件就行。
5,在取值的过程中,记得要replace空格:
PingReply reply = p1.Send(this.txtPACSIP.Text.Replace(" ",""));
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 范围内的货币值。货币、千分位和小数点字符将在运行时由区域性特定的等效字符替代。
掩码语言说明(相当于掩码的语法):
掩码元素
|
说明
|
正则表达式元素
|
0
|
0
到
9
之间的任何一个数字。必选项。
|
/d
|
9
|
数字或空格。可选项。
|
[ /d]?
|
#
|
数字或空格。可选项。如果此位置在掩码中保留为空,它将显示为空格。允许使用加号
(+)
和减号
(-)
。
|
[ /d+-]?
|
L
|
ASCII
字母。必选项。
|
[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,确实神奇一点,以前从来没用过,代码如下(核心处是我用五角星标出来的):
function addNumber(tok)
//输入数值
{
with(oMemery)
{
try
{
var token;
if(tok == "/b") //如果输入的是一个退格
token = inBuffer.slice(0,-1); //那么把缓存中的内容去掉一个
else
token = inBuffer + tok.toString(); //否则接受新输入的数字
//如果数值的第一位是小数点,显示的时候要补一个0
if(token.slice(0,1) == ".") token = 0 + token;
//判断输入接收后的结果是否满足数值的格式:^([/d]+(/.)?[/d]*)?$,其他
//常用正则表达式可以参考我的《C#中验证控件的使用方法总结》的博文
if(/^([/d]+(/.)?[/d]*)?$/.test(token)) // ☆★☆★☆★
{
inBuffer = token; //如果满足,则确认接受,写入缓存
}
return formatBuff(inBuffer);
}
catch(ex)
{
alert(ex.message);
}
}
}
{
with(oMemery)
{
try
{
var token;
if(tok == "/b") //如果输入的是一个退格
token = inBuffer.slice(0,-1); //那么把缓存中的内容去掉一个
else
token = inBuffer + tok.toString(); //否则接受新输入的数字
//如果数值的第一位是小数点,显示的时候要补一个0
if(token.slice(0,1) == ".") token = 0 + token;
//判断输入接收后的结果是否满足数值的格式:^([/d]+(/.)?[/d]*)?$,其他
//常用正则表达式可以参考我的《C#中验证控件的使用方法总结》的博文
if(/^([/d]+(/.)?[/d]*)?$/.test(token)) // ☆★☆★☆★
{
inBuffer = token; //如果满足,则确认接受,写入缓存
}
return formatBuff(inBuffer);
}
catch(ex)
{
alert(ex.message);
}
}
}
本文出自 “南湖矿工技术空间” 博客,请务必保留此出处http://gaochaojs.blog.51cto.com/812546/186459