想实现的。1. 只能输入数字,小数点。可以分别控制他们的位数。
   比如整数部分小于4位,小数点后2位。2. 小数点只能出现1次并且不能出现在首位。3. 不能复制其他不符合的文本到textbox里。4. 首位如果是0的话,除非是 0.n,否则输入其他数字后,0消失。
   比如我先输入0,然后再输入1,textbox里不能显示01,应该显示1。
   好像就这几点儿了。当然小弟一时没想起来的,各位老大们能补充并完善一下最好。十分感谢。好像专业点儿的可以重写textbox来实现。小弟我也很乐意学习但是一窍不通。不知道代码应该放在哪儿应该在哪儿调用。
如果有用重写的大师,麻烦写详细一点儿。十分感谢。

解决方案 »

  1.   


    谢谢。麻烦给个代码吧。。是写在textbox 的change事件里面的吗
      

  2.   

    不是有個 NumericUpDown 控件么,即使覺得那兩個箭頭不好看,網上一搜,大把開源的控件啦
      

  3.   

    /// <summary>
            /// 名称:IsNumber
            /// 判断是否数字函数1(推荐使用)
            /// </summary>
            /// <param name="text">需判断的文本或字符串</param>
            /// <returns>返回true代表数字,否则为非数字</returns>
            public static bool IsNumber(string text)
            {
                Regex objNotNumberPattern = new Regex("[^0-9.-]");
                Regex objTwoDotPattern = new Regex("[0-9]*[.][0-9]*[.][0-9]*");
                Regex objTwoMinusPattern = new Regex("[0-9]*[-][0-9]*[-][0-9]*");
                String strValidRealPattern = "^([-]|[.]|[-.]|[0-9])[0-9]*[.]*[0-9]+$";
                String strValidIntegerPattern = "^([-]|[0-9])[0-9]*$";
                Regex objNumberPattern = new Regex("(" + strValidRealPattern + ")|(" + strValidIntegerPattern + ")");
                return !objNotNumberPattern.IsMatch(text) && !objTwoDotPattern.IsMatch(text) && !objTwoMinusPattern.IsMatch(text) && objNumberPattern.IsMatch(text);
            }以上是个完整的判断字符串是否是数字的组合.
    其中包括对小数点的处理.
    使用前请引用正则表达式的命名空间
      

  4.   

    通过正则匹配小数^[0-9]\d*\.\d{0,2}$|^\d*$

      public static bool InputOnlyNumberAndDot(char e)
            {
                if ((e >= 48 && e <= 57) || (e == 46) || (e == (char)Keys.Back))
                    return true;
                else
                    return false;
            }参考
      

  5.   

    参考C# WinForm开发系列 - TextBox