如何限制文本框输入十进制值,其中小数位前允许6位数,小数位数后2位数

时间:2014-04-16 06:23:02

标签: c# regex winforms

在Windows应用程序文本框中,用户只能输入十进制值,其中小数位前允许6位数,小数位后2位数。(总位数不能超过8位)

---用户应该能够使用删除和返回按钮。

示例: -

> Valid - 123456.22 , 12.22,.33,0.44,123.45(123456.22 - total digits 8)
> Invalid - 1234567.22,123.222,-88.99,-888.999

以下是我用来限制的正则表达式。

 public bool IsDecimalLimitedtoTwoDigits(string inputvalue)
        {
            Regex isnumber = new Regex(@"^[\d]{1,6}([.]{1}[\d]{1,2})?$");
            return isnumber.IsMatch(inputvalue);
        }

上面的代码工作正常,当我在Datagridview验证事件中使用时,用户离开了单元格。

现在我对用于使用上述方法的Textbox事件感到困惑。

==&GT;我想限制用户输入错误的数据。因此我不使用请假/验证事件,而上述正则表达式不符合条件(123456.22 - 总数字8)。所以请帮助我使用正则表达式。< / p>

谢谢, Prathap。

2 个答案:

答案 0 :(得分:0)

您可以使用Control的{​​{3}}事件并使用Validating来显示验证错误。

例如,请参阅ErrorProvider文章,其中介绍了如何在“数据格式通知”中使用它们。部分。

答案 1 :(得分:0)

你只需要调用你的方法

public bool IsDecimalLimitedtoTwoDigits(string inputvalue)
        {
            Regex isnumber = new Regex(@"^[\d]{1,6}([.]{1}[\d]{1,2})?$");
            return isnumber.IsMatch(inputvalue);
        }

Textbox Leave事件

如果您有任何submit按钮或save按钮,请验证按钮点击事件中的代码

您可以使用MessageBox或使用Errorprovider控件

显示错误消息

如果您想在输入时验证数据,则必须在TextChangedKeyPress事件中添加代码

在按键事件中添加

 if (! IsDecimalLimitedtoTwoDigits(textbox1.text)
        {
            e.Handled = true;
        }