检测文本框中的数字键 - VB.NET

时间:2014-08-21 06:45:35

标签: .net vb.net

我想在textbox按键事件中检测numpad的数字键,实际上我只是想让用户从numpad输入数字而不是从字母数字键盘输入。

如果数字不是来自键盘的小键盘,则应取消事件。

除了GetAsyncKeyState()之外还有什么方法可以完成这项任务吗?

目前我正在尝试此代码。

 If e.KeyChar = Chr(49) Then '48 to 57 are the char codes for "0 to 9" of alphanumeric keypad. 
    e.Handled = True 
 End I

使用GetAsyncKeyState()是我的最后一个优先事项,因为它会降低我的应用程序的性能。

2 个答案:

答案 0 :(得分:1)

有两种方法可以检查

  1. 要检查特定键而不是字符,请使用KeyDown / KeyUp事件的KeyCode属性,以获取Keys.NumPad0到Keys.NumPad9之间的值。 KeyPress不提供此属性。

    If (e.KeyCode >= Keys.NumPad0 and e.KeyCode <= Keys.NumPad9) Then ...
    
  2. 如果要检查字符是否为数字,可以使用Char.IsDigit检查字符是否为数字。你可以写:

    If Char.IsDigit(e.KeyChar) Then ....
    

答案 1 :(得分:0)

键盘0-9是键码96到105

      KEY        CODE
    ------------------
     numpad 0    96
     numpad 1    97
     numpad 2    98
     numpad 3    99
     numpad 4    100
     numpad 5    101
     numpad 6    102
     numpad 7    103
     numpad 8    104
     numpad 9    105

Key and Character Codes vs. Event Types
Guide for keycodes