Событие Form.KeyDown (Access)
Событие KeyDown возникает, когда пользователь нажимает клавишу, когда форма или элемент управления имеет фокус. Это событие также возникает при отправке нажатия клавиши в форму или элемент управления с помощью действия SendKeys в макросе или инструкции SendKeys в Visual Basic.
Синтаксис
expression. KeyDown (KeyCode, SHIFT)
выражение: переменная, представляющая объект Form.
Параметры
Имя | Обязательный или необязательный | Тип данных | Описание |
---|---|---|---|
KeyCode | Обязательный | Integer | Код ключа, например vbKeyF1 (клавиша F1) или vbKeyHome (ключ home). Чтобы указать коды ключей, используйте встроенные константы, показанные в обозревателе объектов. Вы можете запретить объекту получать нажатие клавиши, задав для keyCode значение 0. |
Shift | Обязательный | Integer | Состояние клавиш SHIFT, CTRL и ALT во время события. Если необходимо протестировать аргумент Shift , можно использовать одну из следующих встроенных констант в качестве битовых масок:
|
Замечания
Событие KeyDown применяется только к формам и элементам управления в форме, а не к элементам управления в отчете.
Чтобы выполнить макрос или процедуру события при возникновении этих событий, задайте для свойства OnKeyDown имя макроса или [Процедура события].
Для обоих событий объект с фокусом получает все нажатия клавиши. Форма может быть в фокусе, только если на ней нет элементов управления или все ее видимые элементы управления недоступны.
Форма также будет получать все события клавиатуры, даже те, которые происходят для элементов управления, если для свойства KeyPreview формы задано значение Да. При этом параметре свойства все события клавиатуры происходят сначала для формы, а затем для элемента управления, на который установлен фокус. Вы можете отвечать на определенные клавиши, нажатые в форме, независимо от того, какой элемент управления имеет фокус. Например, может потребоваться, чтобы сочетание клавиш CTRL+X всегда выполняло одно и то же действие в форме.
Если вы нажимаете и удерживаете клавишу, события KeyDown и KeyPress чередуются несколько раз (KeyDown, KeyPress, KeyDown, KeyPress и т. д.), пока вы не отпустите ключ, а затем произойдет событие KeyUp.
Хотя событие KeyDown возникает при нажатии большинства клавиш, оно обычно используется для распознавания или различия между:
Расширенные клавиши знаков, такие как функциональные клавиши.
Клавиши навигации, такие как Главная, Конец, PgUp, PgDn, СТРЕЛКА ВВЕРХ, СТРЕЛКА ВНИЗ, СТРЕЛКА ВПРАВО, СТРЕЛКА ВЛЕВО и TAB.
Сочетания клавиш и стандартных модификаторов клавиатуры (клавиши SHIFT, CTRL или ALT).
Клавиши цифр числовой панели и клавиатуры.
Событие KeyDown не возникает при нажатии:
Клавиша ВВОД, если в форме есть кнопка команды, для которой свойство По умолчанию имеет значение Да.
Клавиша ESC, если форма содержит кнопку команды, для которой свойство Cancel имеет значение Да.
Событие KeyDown возникает при нажатии или отправке клавиши ANSI. Событие KeyUp возникает после любого события для элемента управления, вызванного нажатием или отправкой клавиши. Если нажатие клавиши приводит к переходу фокуса с одного элемента управления на другой, для первого элемента управления возникает событие KeyDown , а для второго — события KeyPress и KeyUp .
Чтобы узнать символ ANSI, соответствующий нажатой клавише, используйте событие KeyPress .
Если модальное диалоговое окно отображается в результате нажатия или отправки клавиши, происходят события KeyDown и KeyPress , но событие KeyUp не возникает.
Пример
В следующем примере определяется, нажата ли клавиша SHIFT, CTRL или ALT.
Чтобы попробовать пример, добавьте следующую процедуру события в форму, содержащую текстовое поле с именем KeyHandler.
Private Sub KeyHandler_KeyDown(KeyCode As Integer, _
Shift As Integer)
Dim intShiftDown As Integer, intAltDown As Integer
Dim intCtrlDown As Integer
' Use bit masks to determine which key was pressed.
intShiftDown = (Shift And acShiftMask) > 0
intAltDown = (Shift And acAltMask) > 0
intCtrlDown = (Shift And acCtrlMask) > 0
' Display message telling user which key was pressed.
If intShiftDown Then MsgBox "You pressed the Shift key."
If intAltDown Then MsgBox "You pressed the Alt key."
If intCtrlDown Then MsgBox "You pressed the Ctrl key."
End Sub
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.