中易网

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

答案:2  悬赏:50  
解决时间 2021-03-12 22:28
我想限制输入是两位小数,整数部分没有限制。怎么设置maskedtextbox中的mask呢,比如设置成#.##,但是这样的话整数部分只能输入一位整数。
如果设置成###.###,这样的话,整数部分会显示很多多余的字符,而且我输入小数点不会自动跳转到小数部分。
我有很多的maskedtextbox,不想用正则表达式了,不太会用,或者举个例子怎么用,实现效果也行。
注:winform的呀!
谢谢咯
最佳答案
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的。

希望对你有所帮助!
全部回答
搜一下:MaskedTextBox的mask怎么设置能实现两位小数
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
“中国梦,我的梦”这篇作文怎么写
电脑开机一直出现Missing MBR--helper.,然后
苹果电脑里面的exec是什么文件
山西森特集团闻喜分公司这个地址在什么地方,
小张电动车专业维修在哪里啊,我有事要去这个
请大家对邛崃的各个乡镇按发达不发达排一下名
男朋友单名一个硕字怎么称呼比较好
QQ有人找我帮他挂头像给30是不是骗子呢
圣济堂地址在什么地方,想过去办事
阐述对优势含义的理解
吉他看什么和弦弹什么音阶是什么意思
有这样一种女孩,朋友面前乐呵呵的,疯疯癫癫
摩托车被偷,报警了,车找到了,警察让自己拿
侠盗飞车游戏这屏幕这么小,怎么改
港北区港城社区卫生服务中心地址在什么地方,
推荐资讯
通信勘察设计待遇怎么样好不好
道县永州立邦漆这个地址在什么地方,我要去这
谁知道德盛期货交易软件好吗?有哪些特点?
美国有一个电影~~~讲的是丈夫谋害妻子获取保
齐德盛兴房地产地址有知道的么?有点事想过去
昆明红会医院试用期工资一般是多少呀?我是学
女孩喝醉了难受弄点什么给他喝会舒服点
VB考二级B难吗??
成都大邑玛吉斯服务中心地址在哪,我要去那里
美莎丽专业美发余庆NO.2地址在什么地方,想过
百花堂花卉怎么去啊,有知道地址的么
美天淘日系沙龙(民治店)我想知道这个在什么地
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?