欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

.NET keypress 事件之键盘输入控制

程序员文章站 2022-07-08 07:52:08
下面是我在用VB6.0时实现的代码  [vb] Private Sub txtCash_KeyPress(KeyAscii As Integer) &n...

下面是我在用VB6.0时实现的代码 


[vb]
Private Sub txtCash_KeyPress(KeyAscii As Integer)   '限制输入的金额只能是数字  
If KeyAscii < 48 Or KeyAscii > 57 Then 
        KeyAscii = 0 
        MsgBox "只能输入数字!,请重新输入!", vbOKOnly + vbExclamation, "警告" 
        txtCash.SetFocus 
    End If 
End Sub 

Private Sub txtCash_KeyPress(KeyAscii As Integer)   '限制输入的金额只能是数字
If KeyAscii < 48 Or KeyAscii > 57 Then
        KeyAscii = 0
        MsgBox "只能输入数字!,请重新输入!", vbOKOnly + vbExclamation, "警告"
        txtCash.SetFocus
    End If
End Sub

 

在利用VB.NET 解决这个问题时可以有下面两个方法 
1.  输入后在判断

    输入后控制就是在文本框内数据都输入完成后判断所输入的是否全是数字 ,代码如下


[csharp]
If IsNumeric(txtCash.Text) = False Then 
            '        MsgBox("请在金额中输入有效数字值") 
            '        txtCash.Focus() 
            '        txtCash.SelectAll() 
            '        Exit Sub 
            '    End If 

If IsNumeric(txtCash.Text) = False Then
            '        MsgBox("请在金额中输入有效数字值")
            '        txtCash.Focus()
            '        txtCash.SelectAll()
            '        Exit Sub
            '    End If   但是我觉着这样会很费时间,因为这是需要在程序运行后才能知道的, 而不是输入时就知道自己输入错了


2.输入时判断

    我采用了这中方法,可以再输入时就判断,代码如下:


[csharp]
Private Sub txtCash_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtCash.KeyPress 
        If Char.IsNumber(e.KeyChar) Or e.KeyChar = Chr(Keys.Back) Then   '退格应该允许。    
            Return 
        Else 
            MsgBox("请输入数字") 
            e.Handled = False 
        End If 
        e.Handled = True 
    End Sub 

Private Sub txtCash_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtCash.KeyPress
        If Char.IsNumber(e.KeyChar) Or e.KeyChar = Chr(Keys.Back) Then   '退格应该允许。  
            Return
        Else
            MsgBox("请输入数字")
            e.Handled = False
        End If
        e.Handled = True
    End Sub
其中e.keyChar是获取与键盘按下的键对应的字符, 而keys.Back 就是退格键的命令 

而e.Handled  是返回boolean  表示该事件是否被处理过了