我想在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()
是我的最后一个优先事项,因为它会降低我的应用程序的性能。
答案 0 :(得分:1)
有两种方法可以检查
要检查特定键而不是字符,请使用KeyDown / KeyUp事件的KeyCode属性,以获取Keys.NumPad0到Keys.NumPad9之间的值。 KeyPress不提供此属性。
If (e.KeyCode >= Keys.NumPad0 and e.KeyCode <= Keys.NumPad9) Then ...
如果要检查字符是否为数字,可以使用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