Программирование
Веб программирование

Работа с клавиатурой в VB.Net, Часть I

 
 

Для работы с клавиатурой в VB.Net сохранились события с предыдущих версий VB:

KeyDown - происходит когда клавиша переходит в нажатое состояние
KeyUp - происходит когда клавиша переходит в отжатое состояние
KeyPress - происходит когда клавиша нажата

Эти события есть практически у всех объектов. Например, сейчас мы сделаем программу, в которой при нажатии на клавишу будет показываться сообщение с номером нажатой клавиши.
Перед началом создания программы тебе надо узнать об ASCII кодировки.
ASCII код - это код, который при нажатии на клавишу передает клавиатура программе. При помощи функции Chr() можно раскодировать ASCII код. Так же есть функция Asc() для закодирования символа в ASCII код. Пока наверное это не очень понятно, но ты всё поймешь после того как сделаем программу:

На форме размести кнопку, вот код:

Private Sub Button1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Button1.KeyDown ' Событие происходит когда клавиша переходит в нажатое состояние
MsgBox("ASCII код:" & e.KeyCode & ". Нажата клавиша: " & Chr(e.KeyCode)) ' 'e' - это переменная содержащия все свойства и методы класса System.Windows.Forms.KeyEventArgs, сейчас ты можешь не забивать себе голову классами, и вобще устройством работы с клавиатурой(сейчас все равно ни чего не поймешь, с классами ты познакомишься позже). Из этого шага ты должен узнать только что e.KeyCode - это ASCII код нажатой клавиши. При помощи функции Chr() ASCII код перекодируется в нормальную кодировку. 
End Sub

Теперь запусти программу, передай кнопке фокус(выдели её), и нажимай на клавиши. Исходник


Есть вопросы? Спроси на нашем форуме!!
Andrey [10.10.2011 18:49]

При нажатии клавиш с русскими буквами "х", "ъ", "ж", "э", "ю" программа выдаёт не то, что есть на самом деле

Даня [18.11.2011 22:21]

Andrey, там используются английские буквы, то есть: "Ю" = ">"

Oflameron [17.04.2012 16:31]

Как определить текущую раскладку клавиатуры?

тарас [20.11.2012 19:24]

Public Class Form1


Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
MsgBox(e.KeyCode)
End Sub

пишеш в проге жмёш любую клавишу и в новом окне тебе выбивает код клавиши

Novichok [26.01.2015 22:22]

в роде как лучше работает
Private Sub Form1_KeyPress(sender As System.Object, e As System.Windows.Forms.KeyPressEventArgs) Handles MyBase.KeyPress
Label1.Font = New Font("times", 16) 'для наглядности
Dim strA As String = "ASCII код: " & Asc(e.KeyChar) & ". Нажата клавиша: " & e.KeyChar
Label1.text = strA
End Sub



Оставлять комментарии можно только зарегистрированным




Предупреждение: Вся информация представлена исключительно в образовательных целях.
Ни авторы, ни администрация не несут ответственности в случае ее использования в противозаконных целях.