.net 十进制文本框的最大长度

.net 十进制文本框的最大长度,.net,regex,vb.net,.net,Regex,Vb.net,我想创建一个文本框,允许用户输入十进制值。现在需要注意的是,我想把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 The

我想创建一个文本框,允许用户输入十进制值。现在需要注意的是,我想把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
如果不是Char.IsControl(e.KeyChar)也不是Char.IsDigit(e.KeyChar)也不是Char.IsDigit(e.KeyChar)也不是e.KeyChar“
e、 已处理=真
如果结束
'只允许一个小数点
如果e.KeyChar=“.”c AndAlso TryCast(发送方,文本框).Text.IndexOf(“.”c)>-1,则
e、 已处理=真
如果结束

谁能帮我做一下这个最长的部分吗。感谢您的帮助和指导。

如果使用
MaxLength
属性,您将无法执行此操作,文本框只是查看
String.Length
,而您需要的是将字符串解析为十进制值并对其进行一些边界检查

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

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

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

如果UweKeim已经在使用按键事件来阻止输入字符(可能除了构成有效十进制值的内容之外),那么最好使用and
textBox1.Text.Trim()
?@UweKeim)然后使用
TryParse()
Trim()
(因为他可能已经在阻止空格了)。如果文本是通过右键单击上下文菜单和粘贴命令输入的呢?;-)如果文本=99999,则无法添加小数点并继续填充小数点part@UnLoCo我说这不是精确的算法,但根据他的文本框MaxLength为5,这仍然是正确的。