十进制文本框的最大长度

时间:2012-08-20 18:17:34

标签: .net regex vb.net

我想创建一个允许用户键入十进制值的TextBox。现在的问题是,我想给出积分部分的maxlength(十进制前的值),所以当我说maxlength是5时

用户可以输入

.12
12345
12345.67

用户不应该输入

123456
123456.78

我正在处理文本框按键以限制字母

If Not Char.IsControl(e.KeyChar) AndAlso Not Char.IsDigit(e.KeyChar) AndAlso e.KeyChar <> "."c Then
    e.Handled = True
End If

' only allow one decimal point
If e.KeyChar = "."c AndAlso TryCast(sender, TextBox).Text.IndexOf("."c) > -1 Then
    e.Handled = True
End If

有人可以帮我解决这个maxlength部分。感谢任何帮助和指示。

1 个答案:

答案 0 :(得分:3)

您将无法使用MaxLength属性执行此操作,文本框只是查看String.Length,而您想要的是将字符串实际解析为十进制值并执行检查它的一些界限。

您需要在按键事件中执行此操作。最简单的方法是做一些事情:

var value = Decimal.Parse(textBox1.Text);
if(value >= 99999)
     e.Handled = true;

这不是你可能想要的确切算法,但你明白了。