如何才能让VB里的TEXT控件只能输入数字?

2024-12-30 16:45:46
推荐回答(3个)
回答1:

首先添加好文本框控件TextBox后把属性IMEMode的值改成Disable,这样在该文本框中就不能使用中文输入法了。然后对文本框的KeyPress事件添加以下代码
Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Textbox1.KeyPress
If Char.IsDigit(e.KeyChar) Or e.KeyChar = Chr(8) Then
e.Handled = False
Else
e.Handled = True
End If
End Sub
其中e.KeyChar是键盘输入的键对应的字符,IsDigit函数可以判断是否为0到9的数字,Chr(8)为退格键,当e.Handled为True时,程序认为该KeyPress事件已经被处理过了,文本框的内容也就不会发生变化了
对于限制其他的类型,只要对 Chr()更改就行了。如只需要输入英文字母的条件是:(e.KeyChar >= Chr(65) and e.KeyChar <=Chr(90)) or(e.KeyChar >= Chr(97) and e.KeyChar <=Chr(122))

回答2:

  在文本框的更改事件中,使用IsNumeric函数进行字符类型的判断,如果出错则清空输入框,弹出提示信息,范例代码如下:

Private Sub Text1_Change()
If IsNumeric(Text1.Text) = False Then
MsgBox "只能输入数字"
Text1.Text = ""
Text1.SetFocus
End If
End Sub

回答3:

Const xStr As String = "0123456789"
'先声明一个常量,并把你想禁用或允许输入的内容赋值给它

Private Sub Text1_KeyPress(KeyAscii As Integer)
'只能输入数字
KeyAscii = IIf(InStr(xStr & Chr(8), Chr(KeyAscii)), KeyAscii, 0)
End Sub

Private Sub Text2_KeyPress(KeyAscii As Integer)
'只能输入数字以外的字符
KeyAscii = IIf(InStr(xStr, Chr(KeyAscii)), 0, KeyAscii)
End Sub