当前位置:文档之家› textBox判断是否为数字

textBox判断是否为数字

AndyZhang
welcome to java world
WinForm的TextBox中只能数字与字母而不能输入其他字符

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中只能数字而不能输入其他字符,其实还是比较容易做到的,可能方法很多,下面说说我个人的一种方法。
首先先把代码贴出来:
private void txtNumber_KeyPress(object sender, 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)https://www.doczj.com/doc/2212299065.html,stIndexOf('.') != -1)
{
e.Handled = true;
}
}
else
{
e.Handled = true;
}
}
}

首先,先定义一个string,用来表示数字的正则表达式:
private string pattern = @"^[0-9]*$";

然后再定义一个string,用来记录TextBox原来的内容,以便在输入非数字的时候,文本框的内容可以恢复到原来的值(我不知道TextBox怎么恢复到上一次的内容,只能采用这个笨办法了):
private string param1 = null;

接着,我们就可以在textBox的TextChanged事件中判断输入的是否是数字,如果是数字,

那么就把文本框的内容保存在param1中;如果不是数字,那么取消这次输入,即重新设置文本框的内容为param1:
private void textBoxParam1_TextChanged(object sender, 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的输入数字了。
其他的现在也是类似,只要设定比较的正则表达式的内容即可。

相关主题
文本预览
相关文档 最新文档