Module CheckText<a href="/tag/Box/" target="_blank" class="keywords">Box</a> '以下<a href="/tag/daima/" target="_blank" class="keywords">代码</a>控制Text<a href="/tag/Box/" target="_blank" class="keywords">Box</a>控件只能输入数值型字符串,具体<a href="/tag/neirong/" target="_blank" class="keywords">内容</a>如下: Public Sub CheckKeyPress(ByVal TargetText<a href="/tag/Box/" target="_blank" class="keywords">Box</a> As Text<a href="/tag/Box/" target="_blank" class="keywords">Box</a>,ByVal e As System.Windows.Forms.KeyPressEventArgs,Optional ByVal Minus As Boolean = False,Optional ByVal DecimalCount As Integer = 0) Dim blnHandled As Boolean blnHandled = False Select Case Asc(e.KeyChar) Case Asc("-") ' 负号:只能在最前头 If Not (TargetText<a href="/tag/Box/" target="_blank" class="keywords">Box</a>.SelectionStart = 0 And Minus = True) Then blnHandled = True Case Asc(".") ' 小数点:小数位数大于0;在字符串中没有“.”,且加了“.”后小数位能满足要求 If DecimalCount <= 0 Then blnHandled = True Else If Not (InStr(TargetText<a href="/tag/Box/" target="_blank" class="keywords">Box</a>.Text,".") = 0 And (Len(TargetText<a href="/tag/Box/" target="_blank" class="keywords">Box</a>.Text) - TargetText<a href="/tag/Box/" target="_blank" class="keywords">Box</a>.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(TargetText<a href="/tag/Box/" target="_blank" class="keywords">Box</a>.Text,".") > 0 Then If TargetText<a href="/tag/Box/" target="_blank" class="keywords">Box</a>.SelectionStart > InStr(TargetText<a href="/tag/Box/" target="_blank" class="keywords">Box</a>.Text,".") - 1 Then ' 当前字符位置在小数点后,则小数点后的字符数必须小于小数位 If Len(TargetText<a href="/tag/Box/" target="_blank" class="keywords">Box</a>.Text) - InStr(TargetText<a href="/tag/Box/" target="_blank" class="keywords">Box</a>.Text,".") + 1 > DecimalCount Then blnHandled = True End If End If Case Else blnHandled = True End Select e.Handled = blnHandled End Sub '<a href="/tag/diaoyong/" target="_blank" class="keywords">调用</a>如下: ' Private Sub txtJE_KeyPress(ByVal sender As Object,ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtJE.KeyPress ' CheckKeyPress(sender,e,False,0) ' End Sub End Module