欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C# winfrom-TextBox输入框 ,小数位限制

程序员文章站 2022-06-08 17:36:00
...

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]"))
        {
            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;
}
相关标签: C#