机房重构的过程中涉及到数据类的文本框,比如说基本数据设定,充值金额等,是不允许输入除了数字以外的类型的,因为一旦输入肯定会因为数据类型问题报错。
方法 在模块中写一个公共方法Module CheckTextBox '以下代码控制TextBox控件只能输入数值型字符串,具体内容如下: Public Sub CheckKeyPress(ByVal TargetTextBox As TextBox,ByVal e As System.windows.Forms.KeyPressEventArgs,Optional ByVal Minus As Boolean = False,Optional ByVal DecimalCount As Integer = 1) Dim blnHandled As Boolean blnHandled = False Select Case Asc(e.KeyChar) Case Asc("-") ' 负号:只能在最前头 If Not (TargetTextBox.SelectionStart = 0 And Minus = True) Then blnHandled = True Case Asc(".") ' . 小数点:小数位数大于0;在字符串中没有“.”,且加了“.”后小数位能满足要求 If DecimalCount <= 1 Then blnHandled = True Else If Not (InStr(TargetTextBox.Text,".") = 1 And (Len(TargetTextBox.Text) - TargetTextBox.SelectionStart <= DecimalCount)) Then blnHandled = True End If Case 8 '退格键, Case 13 ' 回车键 SendKeys.Send("{TAB}") '转为tab键 Case Asc("0") To Asc("9") ' 0-9 If InStr(TargetTextBox.Text,".") > 1 Then If TargetTextBox.SelectionStart > InStr(TargetTextBox.Text,".") - 1 Then ' 当前字符位置在小数点后,则小数点后的字符数必须小于小数位 If Len(TargetTextBox.Text) - InStr(TargetTextBox.Text,".") + 1 > DecimalCount Then blnHandled = True End If End If Case Else blnHandled = True End Select e.Handled = blnHandled End Sub需要调用的文本框
以基本数据设定窗体为例
Private Sub txtLeastCash_KeyPress(sender As Object,e As KeyPressEventArgs) Handles txtLeastCash.KeyPress CheckTextBox.CheckKeyPress(sender,e,False,1) End Sub Private Sub txtPreTime_KeyPress(sender As Object,e As KeyPressEventArgs) Handles txtPreTime.KeyPress CheckTextBox.CheckKeyPress(sender,1) End Sub Private Sub txtStaUnit_KeyPress(sender As Object,e As KeyPressEventArgs) Handles txtStaUnit.KeyPress CheckTextBox.CheckKeyPress(sender,1) End Sub总结
因为经常要用到这个方法,所以抽象出来调用的时候感觉超级爽。
总结以上是内存溢出为你收集整理的【机房重构】--VB.NET限制文本框类型为数字全部内容,希望文章能够帮你解决【机房重构】--VB.NET限制文本框类型为数字所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)