Vol*_*ort 0 vb.net visual-studio winforms
给定一个texbox,我怎样才能完全忽略非数字字符?因此,如果我按"A"或"Z",这些字符将永远不会出现在文本框中.如果用户试图输入数字并且他试图输入非数字,我想运行一些代码.
试试这个
Private Sub textBox1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles textBox1.KeyPress
If Char.IsDigit(e.KeyChar) Then
e.Handled = False
Else
e.Handled = True
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
如果e.Handled对于非数字设置为true,则没有输入将转到文本框; 否则事件消息会像往常一样流动.
编辑:
要处理BackSpace和删除是一个更多的工作,但你可以试试这个
Private Sub textBox1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles textBox1.KeyPress
If Char.IsDigit(e.KeyChar) OrElse e.KeyChar = CChar(Keys.Delete) OrElse e.KeyChar = CChar(Keys.Back) Then
e.Handled = False
Else
e.Handled = True
End If
End Sub
Protected Overrides Function ProcessCmdKey(ByRef msg As Message, keyData As Keys) As Boolean
If keyData = Keys.Delete OrElse keyData = Keys.Back Then
OnKeyPress(New KeyPressEventArgs(CChar(keyData))
End If
Return MyBase.ProcessCmdKey(msg, keyData)
End Function
Run Code Online (Sandbox Code Playgroud)
对于Delete和Backspace键不会触发KeyPress事件,因此重写ProcessCmdKey以手动调用表单的OnKeyPress()
| 归档时间: |
|
| 查看次数: |
8929 次 |
| 最近记录: |