//选择文本框的事件窗口,找到按键输入的方法KeyPress,双击建立新的方法。
/// <summary>
/// textBox只能输入数字的处理方法
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void textBox6_KeyPress(object sender, KeyPressEventArgs e)
{
//判断按键是不是要输入的类型。
var textBox1 = (TextBox)sender;
if (((int)e.KeyChar < 48 || (int)e.KeyChar > 57) && (int)e.KeyChar != 8 && (int)e.KeyChar != 46 && e.KeyChar != 0x2D)
e.Handled = true;
//处理负数
if ((e.KeyChar == 0x2D) && (((TextBox)sender).Text.Length != 0)) e.Handled = true;
//处理0(如果第一位为0的话只能输入小数点或者退格键)
if ((int)e.KeyChar != 46 && e.KeyChar != '\b')
{
//分正负数两种情况
if (textBox1.TextLength == 1 && textBox1.Text.Substring(0, 1) == "0")
{
e.Handled = true;
}
else if (textBox1.TextLength == 2 && textBox1.Text.Substring(0) == "-0")
{
e.Handled = true;
}
}
//小数点的处理。
if ((int)e.KeyChar == 46) //小数点
{
if (textBox1.Text.Length <= 0 || textBox1.Text.LastIndexOf('.') != -1)
e.Handled = true; //小数点不能在第一位(正数)或不能有多个小数点
else if(textBox1.TextLength==1 && textBox1.Text.Substring(0) == "-")
{
e.Handled = true; //小数点不能在第一位(负数)
}
}
}
48代表0,57代表9,8代表空格,46代表小数点 ,0x2D代表负数, '\b'代表退格键
此代码考虑了各种情况,如不需要可以去除部分代码实现更简单的效果,例如如果不需要负数的就可以把所有关于负数判断的去掉,灵活运用