MaskedTextBox的mask怎么设置能实现两位小数

我想限制输入是两位小数,整数部分没有限制。怎么设置maskedtextbox中的mask呢,比如设置成#.##,但是这样的话整数部分只能输入一位整数。如果设置成###.#... 我想限制输入是两位小数,整数部分没有限制。怎么设置maskedtextbox中的mask呢,比如设置成#.##,但是这样的话整数部分只能输入一位整数。
如果设置成###.###,这样的话,整数部分会显示很多多余的字符,而且我输入小数点不会自动跳转到小数部分。
我有很多的maskedtextbox,不想用正则表达式了,不太会用,或者举个例子怎么用,实现效果也行。
注:winform的呀!
谢谢咯
展开
 我来答
百度网友be0657f
推荐于2016-12-01 · TA获得超过479个赞
知道小有建树答主
回答量:210
采纳率:0%
帮助的人:316万
展开全部
MaskedTextBox本身功能比较有限,你可以实现KeyPress方法自定义处理,下面的方法能够限制只能录入两位小数位和自动在点号前加0
Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
Try
'小数点.号前添0
If e.KeyChar = ". " And String.IsNullOrEmpty(TextBox1.Text) Then
TextBox1.Text = "0 " & TextBox1.Text
TextBox1.SelectionStart = TextBox1.Text.Length
End If

If Char.IsDigit(e.KeyChar) Or e.KeyChar = ". " Or e.KeyChar = Chr(8) Then
If e.KeyChar = ". " And InStr(TextBox1.Text, ". ") > 0 Then
e.Handled = True '不处理keypress
Else
e.Handled = False
End If
'限制录入两位小数
If Char.IsDigit(e.KeyChar) And InStr(TextBox1.Text, ". ") > 0 And TextBox1.Text.Length - InStr(TextBox1.Text, ". ") > 1 Then
e.Handled = True '不处理keypress
End If
Else
e.Handled = True
End If
Catch ex As Exception
End Try
End Sub

正则表达式的话,你可以用这个:\d+(\.\d{1,2})?。基本够用了,构造完后可能出现“12.”和“.32”这样的数字,这个问题不大可以直接Parse的。

希望对你有所帮助!
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式