C# winfrom-TextBox输入框 ,小数位限制
winfrom-TextBox输入框 ,小数位限制
// 输入限制 private void TextBox_Double_KeyPress(object sender, KeyPressEventArgs e) { TextBox objControl = sender as TextBox; if (objControl is null) return; if (!QZ_Tool.Utility.IsDouble(e.KeyChar, objControl)) { e.Handled = true; } } // 判断浮点型 public static bool IsDouble(char keyChar, TextBox objControl, int numDecimalDigit = 2) { bool bolResult = false; string strValue = objControl.Text; // 第一位不能输入小数点 if (strValue == "" && keyChar == '.') return false; if (Regex.IsMatch(keyChar.ToString(), "[0-9\b.]")) { // 输入小数点 if (keyChar == '.') { // 检测是否存在小数点,如果存在就不能输入小数点 if (!strValue.Contains('.')) bolResult = true; } //else if (Regex.IsMatch(keyChar.ToString(), "[0-9]") && Regex.IsMatch(strValue, "[0-9].[\\d]+[\\d]+[\\d]")) //{ // bolResult = false; //} else if (Regex.IsMatch(keyChar.ToString(), "[0-9]")) { string strSelectText = objControl.SelectedText; // 判断是否有选择字符串 if (strSelectText.Trim() != "") { bolResult = true; } // 判断是否存在小数点 else if (strValue.Contains('.')) { // 获取小数点位置 var numDigitIndex = strValue.IndexOf('.') + 1; var numSelectionStart = objControl.SelectionStart; // 判断光标在小数点后 && numDigitIndex > strValue.Length if (numSelectionStart > numDigitIndex) { // 获取小数点后的小数位数 var strSmallNumber = strValue.Substring(numDigitIndex, strValue.Length - numDigitIndex); // 判断小数位数 if (strSmallNumber.Length >= numDecimalDigit) { // 字符串最后一个字符替换成输入字符 objControl.Text = strValue.Substring(0, strValue.Length - 1) + keyChar.ToString(); objControl.SelectionStart = numSelectionStart; } else { bolResult = true; } } else { bolResult = true; } } else { bolResult = true; } } else { bolResult = true; } } return bolResult; }
//// 判断浮点型
//public static bool IsDouble(char keyChar, string strValue)
//{
// bool bolResult = false;
// // 第一位不能输入小数点
// if (strValue == "" && keyChar == '.')
// return false;
// if (Regex.IsMatch(keyChar.ToString(), "[0-9\b.]"))
// {
// if (keyChar == '.')
// {
// if (!strValue.Contains('.'))
// bolResult = true;
// }
// else if (Regex.IsMatch(keyChar.ToString(), "[0-9]") && Regex.IsMatch(strValue, "[0-9].[\\d]+[\\d]+[\\d]"))
// {
// bolResult = false;
// }
// else
// bolResult = true;
// }
// return bolResult;
//}