Winform TextBox 验证输入的数字格式是否合法

来源:互联网 发布:软件研发工作内容 编辑:程序博客网 时间:2024/06/05 01:17

这里对于输入数字限定只包含数字、负号、小数点这三种。

首先对于不符合以上三种的字符在TextBox的KeyPress事件代码里过滤掉:

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar != '\b' && !Char.IsDigit(e.KeyChar)&&(e.KeyChar!='.')&&e.KeyChar!='-')
            {
                e.Handled = true;
            }
        }


后续的格式验证我能想到的只能通过在提交数据后验证了,不知道还有没其它更好的方法,欢迎指点。Button提交的代码如下:

private void button1_Click(object sender, EventArgs e)
        {
            string checkValue = textBox1.Text;
            int countNegative = 0;
            int countDot = 0;
            foreach (var c in checkValue)
            {
                if (c == '-')
                    countNegative++;
                if (c == '.')
                    countDot++;
            }
            if (countDot > 1 || countNegative > 1)//判断负号和小数点是否多于1个
            {
                MessageBox.Show("输入的数字格式有误,请重新输入!");
                return;
            }
            if (checkValue.Contains('-') && checkValue.IndexOf('-') != 0)//判断负号是否位于字符串首位
            {
                MessageBox.Show("负号格式有误,请重新输入!");
                return;
            }
            if ((checkValue.Contains('.') && checkValue.IndexOf('.') == 0) || checkValue.IndexOf('.') == checkValue.Length-1)//判断小数点是否位于字符串首位或末尾。
            {
                MessageBox.Show("小数点格式有误,请重新输入!");
                return;
            }
            if (checkValue.Contains('-') && checkValue.Contains('.') && checkValue.IndexOf('-') == 0 && checkValue.IndexOf('.') == 1)//如同时包括两种符号,判断是否连在一起
            {
                MessageBox.Show("小数点格式有误,请重新输入!");
                return;
            }
            MessageBox.Show(checkValue);
        }

可能出现的情况应该都有考虑到了,不知道还有遗漏没。

以上有参考了http://blog.csdn.net/hjingtao/article/details/7302448 

如有更好的验证方法,欢迎指点。



0 0