// 修改值 private void dgvOrderIn_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e) { DataGridViewTextBoxEditingControl CellEdit = (DataGridViewTextBoxEditingControl)e.Control; CellEdit.SelectAll(); CellEdit.KeyPress -= new KeyPressEventHandler(Cells_Number_KeyPress); CellEdit.KeyPress -= new KeyPressEventHandler(Cells_Price_KeyPress); switch (this.dgvOrderIn.CurrentCellAddress.X) { case 4: //数量 CellEdit.KeyPress += new KeyPressEventHandler(Cells_Number_KeyPress); break; case 3: //单价 case 5: //折扣率 CellEdit.KeyPress += new KeyPressEventHandler(Cells_Price_KeyPress); break; default: break; } } // 键盘输入数量控制 private void Cells_Number_KeyPress(object sender, KeyPressEventArgs e) { int kc = Convert.ToInt32(e.KeyChar); // 8 backspace退格 // 13 回车 // 46 . // 48 0 // 57 9 if ((kc < 48 || kc > 57) && kc != 8 && kc != 13) { e.Handled = true; } TextBox tb = (TextBox)sender; string strMathchValue = tb.Text; //判断是否为退格键 if (kc == 8) { ///判断输入控件选择文本的长度 if (tb.SelectionLength == 0) {//未选文本中时处理 if (tb.SelectionStart > 0) {//选择的开始位置大于0时处理 //strMathchValue.Remove(tb.SelectionStart, 1); strMathchValue.Remove(tb.SelectionStart - 1, 1); } } else {//有选中文本时处理 strMathchValue.Remove(tb.SelectionStart, tb.SelectionLength); } } else { //将当前输入的字符号插入到原来的字符串中 strMathchValue = strMathchValue.Insert(((TextBox)sender).SelectionStart, e.KeyChar.ToString()); } Regex rx = new Regex(@"^\+?[1-9][0-9]*$", RegexOptions.IgnoreCase); if (rx.IsMatch(strMathchValue) == false) { e.Handled = true; } } // 键盘输入价格控制 private void Cells_Price_KeyPress(object sender, KeyPressEventArgs e) { int kc = Convert.ToInt32(e.KeyChar); if ((kc < 48 || kc > 57) && kc != 8 && kc != 13 && kc != 46) { e.Handled = true; } TextBox tb = (TextBox)sender; string strMathchValue = tb.Text; if (kc == 8) { if (tb.SelectionLength == 0) { if (tb.SelectionStart > 0) { strMathchValue.Remove(tb.SelectionStart - 1, 1); } } else { strMathchValue.Remove(tb.SelectionStart, tb.SelectionLength); } } else { strMathchValue = strMathchValue.Insert(((TextBox)sender).SelectionStart, e.KeyChar.ToString()); } Regex rx = new Regex(@"^[0-9]+\.{0,1}[0-9]{0,2}$", RegexOptions.IgnoreCase); if (rx.IsMatch(strMathchValue) == false) { e.Handled = true; } }