//选择文本框的事件窗口,找到按键输入的方法KeyPress,双击建立新的方法。 ////// textBox只能输入数字的处理方法 /// /// /// 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'代表退格键 此代码考虑了各种情况,如不需要可以去除部分代码实现更简单的效果,例如如果不需要负数的就可以把所有关于负数判断的去掉,灵活运用