MaskedTextBox的mask怎么设置能实现两位小数
我想限制输入是两位小数,整数部分没有限制。怎么设置maskedtextbox中的mask呢,比如设置成#.##,但是这样的话整数部分只能输入一位整数。如果设置成###.#...
我想限制输入是两位小数,整数部分没有限制。怎么设置maskedtextbox中的mask呢,比如设置成#.##,但是这样的话整数部分只能输入一位整数。
如果设置成###.###,这样的话,整数部分会显示很多多余的字符,而且我输入小数点不会自动跳转到小数部分。
我有很多的maskedtextbox,不想用正则表达式了,不太会用,或者举个例子怎么用,实现效果也行。
注:winform的呀!
谢谢咯 展开
如果设置成###.###,这样的话,整数部分会显示很多多余的字符,而且我输入小数点不会自动跳转到小数部分。
我有很多的maskedtextbox,不想用正则表达式了,不太会用,或者举个例子怎么用,实现效果也行。
注:winform的呀!
谢谢咯 展开
1个回答
展开全部
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的。
希望对你有所帮助!
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的。
希望对你有所帮助!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询