winform文本框限制只能输入四位小数

在KeyPress事件中调用如下代码,把KeyPress,和文本值传入即可

private void keyNumber(KeyPressEventArgs e, String text)
        {
            // 最多输入四位小数
            if (text.IndexOf(".") != -1)
            {
                string s = text.Substring(text.IndexOf("."));
                if (s.Length > 4)
                {
                    // 删除键不禁用
                    if ((int)e.KeyChar != 8)
                        e.Handled = true;
                }
            }

            try
            {
                int kc = (int)e.KeyChar;
                if (((kc < 48 && kc != 46) || kc > 57) && kc != 8)
                    e.Handled = true;   // 按键不生效
                if (kc == 46)                       //小数点  
                {
                    if (text.Length <= 0)
                        e.Handled = true;           //小数点不能在第一位  
                    else
                    {
                        float f;
                        float oldf;
                        bool b1 = false, b2 = false;
                        b1 = float.TryParse(text, out oldf);
                        b2 = float.TryParse(text + e.KeyChar.ToString(), out f);
                        if (b2 == false)
                        {
                            if (b1 == true)
                                e.Handled = true;
                            else
                                e.Handled = false;
                        }
                    }
                }
            }
            catch (Exception)
            {
            }
        }

猜你喜欢

转载自llyilo.iteye.com/blog/2260874
今日推荐