只能输入数字的方法:
首先谢谢这些作者,参考了这几篇文章。都很好的:
http://www.cnblogs.com/codefly/archive/2011/12/07/2279316.html
http://www.cnblogs.com/IAmBetter/archive/2012/01/10/2318328.html
利用这则:
http://tech.it168.com/d/2008-05-08/200805080926800.shtml
在Winform(C#)中要实现限制Textbox只能输入数字,一般的做法就是在按键事件中处理,判断keychar的值。限制只能输入数字,小数点,Backspace,del这几个键。数字0~9所对应的keychar为48~57,小数点是46,Backspace是8。 会车是13
拖一个Textbox到窗体上,添加OnKeyPress事件,在事件写判断的代码,只要判断不是这些键,设置e.Handled的值为true,就可以屏蔽输入。
1: textbox.OnKeyPress事件是在向textbox输入字符的时候触发的。
2:判断如果不是这些字符就禁止输入。char.IsDigit(e.KeyChar)判断是否是数字
if(e.KeyChar!=8&&e.KeyChar!=13&&!char.IsDigit(e.KeyChar)&&e.KeyChar!=46)
{
//8 删除键 13回车 46 小数点
MessageBox.Show("请输入数字");
e.Handled = true;//禁止输入
}
3:当如果textbox已有值为123 当我键盘点击 A 时:
Textbox.text 取到的就是123. 如果要取到123A应该是:textbox.text+e.KeyChar.ToString()
///////////////////////////////////////
自己实现的是:
private void textBox2_KeyPress(object sender, KeyPressEventArgs e)
{
//数字0~9所对应的keychar为48~57
//小数点是46,Backspace是8 ,会车 13
if (e.KeyChar != 8 && e.KeyChar != 13 && !char.IsDigit(e.KeyChar) && e.KeyChar != 46)
{
e.Handled = true; //禁止输入
}
if (e.KeyChar == 46)
{
string pattern = @"^\d+(\.\d+)?$"; //匹配正浮点数的正则
Match m = Regex.Match(textBox2.Text + e.KeyChar.ToString() + "0", pattern);
//textBox2.Text取到的是在点击键盘输入字符前的textbox的text。
//加0 是为了当输入 点 时,是字符串拼接为合法的。
if (!m.Success)
{
e.Handled = true;
}
}
}