KeyDown, KeyUp

События происходят при нажатии (KeyDown) или отпускании (KeyUp) пользователем клавиши, только в том случае, когда объект получил фокус. (Для определения ANSI кодов нажатия клавиш используется событие KeyPress).

Синтаксис

Sub Form_KeyDown(keycode As Integer, shift As Integer)
Sub Pic1_KeyDown(
keycode As Integer, shift As Integer)
Sub Text1_KeyDown(
keycode As Integer, shift As Integer)
Sub MText1_KeyDown(
keycode As Integer, shift As Integer)
Sub TextBox1_KeyDown(
keycode As Integer, shift As Integer)
Sub List1_KeyDown(
keycode As Integer, shift As Integer)
Sub Combo1_KeyDown(
keycode As Integer, shift As Integer)
Sub LCombo1_KeyDown(
keycode As Integer, shift As Integer)
Sub HScroll1_KeyDown(
keycode As Integer, shift As Integer)
Sub VScroll1_KeyDown(
keycode As Integer, shift As Integer)
Sub Skin1_KeyDown(
keycode As Integer, shift As Integer)

Sub Form_KeyUp(keycode As Integer, shift As Integer)
Sub Pic1_KeyUp(
keycode As Integer, shift As Integer)
Sub Text1_KeyUp(
keycode As Integer, shift As Integer)
Sub MText1_KeyUp(
keycode As Integer, shift As Integer)
Sub TextBox1_KeyUp(
keycode As Integer, shift As Integer)
Sub List1_KeyUp(
keycode As Integer, shift As Integer)
Sub Combo1_KeyUp(
keycode As Integer, shift As Integer)
Sub LCombo1_KeyUp(
keycode As Integer, shift As Integer)
Sub HScroll1_KeyUp(
keycode As Integer, shift As Integer)
Sub VScroll1_KeyUp(
keycode As Integer, shift As Integer)
Sub Skin1_KeyUp(
keycode As Integer, shift As Integer)

Части синтаксической последовательности для событий KeyDown и KeyUp приведены в таблице:

Часть

Описание

1
Целое число, однозначно определяющее элемент управления, если он находится в массиве элементов управления
keycode
Код клавиши. Например, vbKeyF1 (клавиша F1) или vbKeyHome (клавиша HOME). Для описания кодов клавиш используются константы в библиотеке объектов Visual Basic (VB) в элементе Object Browser.
shift
Целое число, соответствующее состоянию клавиш SHIFT, CTRL и ALT во время события. Аргумент shift является битовым полем, младшие биты которого соответствуют клавише SHIFT (бит 0), клавише CTRL (бит 1) и клавише ALT (бит 2). Эти биты соответствуют значениям 1, 2 и 4. Установка этих битов указывает на то, что соответствующие клавиши нажаты. Например, если нажаты клавиши CTRL и ALT, значение shift равно 6.

Примечания

Для обоих событий, объект, обладающий фокусом, получает все нажатия клавиш. Форма может получить фокус, только если у нее нет видимых и разрешенных элементов управления. Хотя события KeyDown и KeyUp применимы к большинству клавиш, чаще всего их используют для:

Процедуры событий KeyDown и KeyUp используются в том случае, если нужно реагировать как на нажатие, так и на отпускание клавиши.

KeyDown и KeyUp не вызываются для:

KeyDown и KeyUp различают верхний и нижний регистр каждого символа с помощью двух аргументов: keycode, указывающего на реальную клавишу (одной клавишей возвращаются 'A' и 'a') и shift, показывающего состояние shift+key, и потому возвращающий 'A' или 'a'.

Для проверки аргумента shift используются определяющие биты аргумента константы shift. Константы имеют следующие значения:

Константа

Значение

Описание

vbShiftMask
1 Битовая маска клавиши SHIFT.
vbCtrlMask
2 Битовая маска клавиши CTRL.
vbAltMask
4 Битовая маска клавиши ALT.

Константы используются как битовые маски для проверки любого сочетания клавиш.

Условие проверяется после присвоения результата временной целой переменной. Значение shift сравнивается с битовой маской. Используйте оператор And с аргументом shift, и тогда, если модификатор нажат, то результат становится больше нуля:

ShiftDown = (Shift And vbShiftMask) > 0

Далее можно проверять любое сочетание условий, например:

If ShiftDown And CtrlDown Then

Замечание Если присвоено значение True свойства KeyPreview, то форма получает эти сообщения раньше, чем элементы управления формы. Свойство KeyPreview используется для создания глобальных программ обслуживания клавиатуры.


Назад