Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Событие KeyDown возникает, когда пользователь нажимает клавишу во время фокуса на форме или элементе управления. Это событие также происходит при отправке нажатия клавиши в форму или элемент управления с помощью действия SendKeys в макросе или инструкции SendKeys в Visual Basic.
Синтаксис
выражение. KeyDown (KeyCode, Shift)
выражение Переменная, представляющая объект WebBrowserControl .
Параметры
| Имя | Обязательный или необязательный | Тип данных | Описание |
|---|---|---|---|
| KeyCode | Обязательный | Integer | Код ключа, например vbKeyF1 (клавиша F1) или vbKeyHome (клавиша Home). Чтобы указать коды клавиш, используйте встроенные константы, показанные в обозревателе объектов. Можно предотвратить нажатие клавиш объектом, задав значение 0 для параметра KeyCode . |
| Shift | Обязательный | Integer | Состояние клавиш SHIFT, CTRL и ALT во время события. Для проверки аргумента Shift в качестве битовых масок можно использовать одну из следующих встроенных констант:
|
Возвращаемое значение
Отсутствует
Примечания
Событие KeyDown применяется только к формам и элементам управления в форме, но не к элементам управления в отчете.
Чтобы запускать макрос или процедуру события при таких событиях, задайте для свойства OnKeyDown имя макроса или [Процедура обработки события].
В обоих случаях объект, находящийся в фокусе, получает все нажатия клавиш. Форма может быть в фокусе, только если на ней нет элементов управления или все ее видимые элементы управления недоступны.
Форма также будет получать все события клавиатуры, даже те, которые происходят с элементами управления, если вы зададите для свойства KeyPreview формы значение Да. При использовании этого свойства все события клавиатуры сначала для формы, а затем для элемента управления, находящегося в фокусе. Вы можете реагировать на определенные клавиши, нажатые в форме, независимо от того, на каком элементе управления установлен фокус. Например, можно захотеть, чтобы сочетание клавиш CTRL+X всегда выполняло одно и то же действие с формой.
Если нажать и удерживать клавишу, события KeyDown и KeyPress повторяются последовательно (KeyDown, KeyPress, KeyDown, KeyPress и т. д.), пока вы не отпустите клавишу, после чего произойдет событие KeyUp .
Хотя событие KeyDown происходит при нажатии большинства клавиш, оно обычно используется для распознавания или различения:
Расширенные клавиши знаков, такие как функциональные клавиши.
клавиши навигации, такие как HOME, END, 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 и обратная связь.