最佳方案第一个. 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; } } } private void textBox1_KeyPress( object sender, System.Windows.Forms.KeyPressEventArgs e) ... { if(e.KeyChar==8) ...{ return; } if(e.KeyChar==46 && textBox1.Text.IndexOf('.')==-1) ...{ return; } if(e.KeyChar>57 || e.KeyChar<48) ...{ e.Handled=true; this.Focus(); } } function KeyPress(objTR){ var txtval = objTR.value; var key = event.keyCode; if((key < 48 || key > 57)& &key !=46) { event.keyCode = 0; } else { if(key == 46) { if(txtval.indexOf(".") != -1 || txtval.length == 0) event.keyCode = 0; } }}