private void textBox1_KeyDown(object sender, KeyEventArgs e)
        {
            string str = Regex.IsMatch(e.KeyCode.ToString(), "^OemPeriod|Decimal$") ? this.textBox1.Text + "." : this.textBox1.Text;            if (
                (this.textBox1.Text.Length == 0 && Regex.IsMatch(e.KeyCode.ToString(), "^OemPeriod|Decimal$")) 
                || !Regex.IsMatch(e.KeyCode.ToString(), "^((D|NumPad)\\d|(Back|OemPeriod|Decimal))$") 
                || (!(str.IndexOf(".") == str.LastIndexOf(".")) && str.IndexOf(".") != -1))
                
            {
                e.SuppressKeyPress = true;
            }
        }
上面的代码实现了验证首字符不能为小数点,且只能输入数字和小数点,删除键,
现在还差验证小数点后面的字符不能超过2位数,试了好多办法都没有成功,希望大牛可以帮帮忙~
在原代码的集成上实现。

解决方案 »

  1.   


    string str = Regex.IsMatch(e.KeyCode.ToString(), "^OemPeriod|Decimal$") ? this.textBox1.Text + "." : this.textBox1.Text;
    if(str.Length>0)
    {
        str =str.Length>3?"":str;
    }
      

  2.   


            private void textBox1_KeyDown(object sender, KeyEventArgs e)
            {
                string str = Regex.IsMatch(e.KeyCode.ToString(), "^OemPeriod|Decimal$") ? this.textBox1.Text + "." : this.textBox1.Text;
                if (
                    (this.textBox1.Text.Length == 0 && Regex.IsMatch(e.KeyCode.ToString(), "^OemPeriod|Decimal$"))
                    || !Regex.IsMatch(e.KeyCode.ToString(), "^((D|NumPad)\\d|(Back|OemPeriod|Decimal))$")
                    || (!(str.IndexOf(".") == str.LastIndexOf(".")) && str.IndexOf(".") != -1)
                    || (e.KeyCode == Keys.Back ? 0 : str.IndexOf(".") == -1 ? 0 : str.Substring(str.IndexOf(".")).ToString().Length) == 3)
                {
                    e.SuppressKeyPress = true;
                }
            }
    搞定了~代码贴上来和大家分享下~
    不知道大家还有没有其他更方便一点的方法~
    就是在文本框输入的时候验证输入的值是否符合货币类型~
      

  3.   


            private void textBox1_KeyDown(object sender, KeyEventArgs e)
            {
                // 验证文本框输入字符是否为货币型
                string str = Regex.IsMatch(e.KeyCode.ToString(), "^OemPeriod|Decimal$") ? this.textBox1.Text + "." : this.textBox1.Text;
           
                if (
                    (this.textBox1.Text.Length == 0 && Regex.IsMatch(e.KeyCode.ToString(), "^OemPeriod|Decimal$"))
                    || !Regex.IsMatch(e.KeyCode.ToString(), "^((D|NumPad)\\d|(Back|OemPeriod|Decimal))$")
                    || (!(str.IndexOf(".") == str.LastIndexOf(".")) && str.IndexOf(".") != -1)
                    || (str.IndexOf("0") == 0 && Regex.IsMatch(e.KeyCode.ToString(), "^(D|NumPad)0$"))
                    || (e.KeyCode == Keys.Back ? 0 : str.IndexOf(".") == -1 ? 0 : str.Substring(str.IndexOf(".")).ToString().Length) == 3)
                {
                    e.SuppressKeyPress = true;
                }这样就可以了~不过感觉代码有点多~大牛帮忙精简下哇~
      

  4.   

    恩  不错jiayou