C# 如何限制文本框输入十进制值,允许在十进制前最多输入6位,在十进制后最多输入2位
在windows应用程序文本框中,用户只能输入小数点前最多允许6位,小数点后允许2位的小数点值。总位数不能超过8位 --用户应该能够使用删除和返回按钮 示例:-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
> 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事件之后,文本框中才会有文本。