Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何限制文本框输入十进制值,允许在十进制前最多输入6位,在十进制后最多输入2位_C#_Regex_Winforms - Fatal编程技术网

C# 如何限制文本框输入十进制值,允许在十进制前最多输入6位,在十进制后最多输入2位

C# 如何限制文本框输入十进制值,允许在十进制前最多输入6位,在十进制后最多输入2位,c#,regex,winforms,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 IsDecimalLimite

在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事件感到困惑

==>我想限制用户输入错误的数据。因此我不使用leave/validating events,并且上面的正则表达式不满足标准123456.22-总位数8。因此,请也帮助我使用正则表达式

谢谢, Prathap.

您可以使用控制事件和用于显示验证错误


例如,请参阅“数据格式通知”一节中描述其使用的文章。

您只需调用您的方法即可

public bool IsDecimalLimitedtoTwoDigits(string inputvalue)
        {
            Regex isnumber = new Regex(@"^[\d]{1,6}([.]{1}[\d]{1,2})?$");
            return isnumber.IsMatch(inputvalue);
        }
文本框中的离开事件

如果您有任何提交按钮或保存按钮,请验证按钮单击事件中的代码

您可以使用MessageBox或Errorprovider控件显示错误消息

如果要在输入时验证数据,必须在TextChanged或KeyPress事件中添加代码

按键事件中添加

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

但验证事件只会在焦点从控件移动时触发。我使用了textbox验证事件,它与正则表达式配合良好。我想在用户输入数据时进行验证。哦,对了,我现在明白了。能否将MasktedTextBox与其掩码属性一起使用?虽然不支持正则表达式,但您需要使用此处描述的格式,因为正则表达式在我的应用程序中的大多数位置都可用,我现在不想使用maskedtextbox。我只是想知道在这种情况下如何使用keypress/keydown事件。我已经尝试过了。在上述情况下,文本将为空,因为用户第一次输入数据时,只有在keypress事件之后,文本框中才会有文本。