java文本框只能数字和字母_WinForm的TextBox中只能数字与字母而不能输入其他字符...

本文介绍了如何在WinForm的TextBox控件中限制用户输入,仅允许输入数字和字母。通过处理KeyPress事件,使用条件判断检查字符是否在指定范围内,从而实现输入过滤。同时提供了一个示例代码,演示如何阻止除数字、字母和退格键之外的其他字符输入。
摘要由CSDN通过智能技术生成

private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)

{

if((e.KeyChar>='0'&&e.KeyChar<='9')||(e.KeyChar>='A'&&e.KeyChar<='Z')||(e.KeyChar>='a'&&e.KeyChar<='z'))

e.Handled=false;

else

e.Handled=true;

}

有些情况下,在开发WinForm的时候希望TextBox中只能数字而不能输入其他字符,其实还是比较容易做到的,可能方法很多,下面说说我个人的一种方法。

首先先把代码贴出来:

privatevoidtxtNumber_KeyPress(objectsender, KeyPressEventArgs e)

{

if(char.IsDigit(e.KeyChar)||((int)e.KeyChar)==8)//8为Backspac所对应的ascii

{

//表示:该事件尚未处理,事件会继续处理

e.Handled=false;

}

else

{

//表示:该事件已经处理过了,事件就不会在响应去处理了

e.Handled=true;

MessageBox.Show("请输入数字!");

}

}

然后再来解释下:首先是创建一个对TextBox(txtNumber) 增加一个KeyPress事件响应,当每按完一个键盘键时将响应该事件。

然后再通过char.IsDigit来判断键入的字符是否为数字,如果是,则设置e.Handled为false,即数字可以输入到TextBox中,当然当按下Backspace时    要响应删除事件,不然输入错了可删除不了了哦!

好吧,大概流程就是这样了!

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)//文本框只接受数字的输入和小数点{//IsNumber:指定字符串中位于指定位置的字符是否属于数字类别//IsPunctuation:指定字符串中位于指定位置的字符是否属于标点符号类别//IsControl:指定字符串中位于指定位置的字符是否属于控制字符类别if (!Char.IsNumber(e.KeyChar) && !Char.IsPunctuation(e.KeyChar) && !Char.IsControl(e.KeyChar)){e.Handled = true; //获取或设置一个值,指示是否处理过System.Windows.Forms.Control.KeyPress事件}else if (Char.IsPunctuation(e.KeyChar)){if (e.KeyChar == '.'){if (((TextBox)sender).Text.LastIndexOf('.') != -1){e.Handled = true;}}else{e.Handled = true;}}}

首先,先定义一个string,用来表示数字的正则表达式:

f0cd6c7f9e7ae96feae062cb48f670f0.pngprivatestringpattern=@"^[0-9]*$";然后再定义一个string,用来记录TextBox原来的内容,以便在输入非数字的时候,文本框的内容可以恢复到原来的值(我不知道TextBox怎么恢复到上一次的内容,只能采用这个笨办法了):

f0cd6c7f9e7ae96feae062cb48f670f0.pngprivatestringparam1=null;接着,我们就可以在textBox的TextChanged事件中判断输入的是否是数字,如果是数字,那么就把文本框的内容保存在param1中;如果不是数字,那么取消这次输入,即重新设置文本框的内容为param1:

f0cd6c7f9e7ae96feae062cb48f670f0.pngprivatevoidtextBoxParam1_TextChanged(objectsender, EventArgs e)

34031c708bfe702fe82d01ff5c6593aa.png{

587e34b10dcf5efbc0859b53470a2db3.png            Match m=Regex.Match(this.textBoxParam1.Text, pattern);//匹配正则表达式587e34b10dcf5efbc0859b53470a2db3.png587e34b10dcf5efbc0859b53470a2db3.pngif(!m.Success)//输入的不是数字3112b7b6526db5bc83e275260ae60525.png{

587e34b10dcf5efbc0859b53470a2db3.pngthis.textBoxParam1.Text=param1;//textBox内容不变

587e34b10dcf5efbc0859b53470a2db3.png

587e34b10dcf5efbc0859b53470a2db3.png//将光标定位到文本框的最后587e34b10dcf5efbc0859b53470a2db3.pngthis.textBoxParam1.SelectionStart=this.textBoxParam1.Text.Length;

eec4c0236afc26744c9c4e910bc34958.png            }587e34b10dcf5efbc0859b53470a2db3.pngelse//输入的是数字3112b7b6526db5bc83e275260ae60525.png{

587e34b10dcf5efbc0859b53470a2db3.png                param1=this.textBoxParam1.Text;//将现在textBox的值保存下来eec4c0236afc26744c9c4e910bc34958.png}4fd96b3cf02f4c7b5c8964ac8167f7af.png        }这样,就基本上实现了用正则表达式限制TextBox的输入数字了。其他的现在也是类似,只要设定比较的正则表达式的内容即可。

posted on 2012-04-16 10:14 SkyDream 阅读(3294) 评论(0)  编辑  收藏 所属分类: C# WinForm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值