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,用来表示数字的正则表达式:
privatestringpattern=@"^[0-9]*$";然后再定义一个string,用来记录TextBox原来的内容,以便在输入非数字的时候,文本框的内容可以恢复到原来的值(我不知道TextBox怎么恢复到上一次的内容,只能采用这个笨办法了):
privatestringparam1=null;接着,我们就可以在textBox的TextChanged事件中判断输入的是否是数字,如果是数字,那么就把文本框的内容保存在param1中;如果不是数字,那么取消这次输入,即重新设置文本框的内容为param1:
privatevoidtextBoxParam1_TextChanged(objectsender, EventArgs e)
{
Match m=Regex.Match(this.textBoxParam1.Text, pattern);//匹配正则表达式if(!m.Success)//输入的不是数字{
this.textBoxParam1.Text=param1;//textBox内容不变
//将光标定位到文本框的最后this.textBoxParam1.SelectionStart=this.textBoxParam1.Text.Length;
}else//输入的是数字{
param1=this.textBoxParam1.Text;//将现在textBox的值保存下来} }这样,就基本上实现了用正则表达式限制TextBox的输入数字了。其他的现在也是类似,只要设定比较的正则表达式的内容即可。
posted on 2012-04-16 10:14 SkyDream 阅读(3294) 评论(0) 编辑 收藏 所属分类: C# WinForm