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

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

首先对于不符合以上三种的字符在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 

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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值