Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Событие KeyPress возникает, когда пользователь нажимает и отпускает клавишу или сочетание клавиш, соответствующее коду ANSI, во время фокуса находится форма или элемент управления. Это событие также происходит при отправке нажатия клавиши ANSI в форму или элемент управления с помощью действия SendKeys в макросе или инструкции SendKeys в Visual Basic.
Синтаксис
выражение. KeyPress (KeyAscii)
выражение Переменная, представляющая объект CommandButton .
Параметры
| Имя | Обязательный или необязательный | Тип данных | Описание |
|---|---|---|---|
| KeyAscii | Обязательный | Integer | Возвращает числовой код ключа ANSI. Аргумент KeyAscii передается по ссылке; его изменение посылает объекту другой символ. Присвоение аргументу KeyAscii значения 0 отменяет нажатие клавиши, поэтому объект не распознает нажатие клавиши. |
Примечания
Чтобы запустить макрос или процедуру события при наступлении этого события, задайте для свойства OnKeyPress имя макроса или значение [Процедура события].
Объект, находящийся в фокусе, получает все нажатия клавиш. Форма может быть в фокусе, только если на ней нет элементов управления или все ее видимые элементы управления недоступны.
Форма также будет получать все события клавиатуры, даже те, которые происходят с элементами управления, если вы зададите для свойства KeyPreview формы значение Да. При использовании этого свойства все события клавиатуры сначала для формы, а затем для элемента управления, находящегося в фокусе. Вы можете реагировать на определенные клавиши, нажатые в форме, независимо от того, на каком элементе управления установлен фокус. Например, можно захотеть, чтобы сочетание клавиш CTRL+X всегда выполняло одно и то же действие с формой.
Если нажать и удерживать клавишу ANSI, события KeyDown и KeyPress повторяются последовательно (KeyDown, KeyPress, KeyDown, KeyPress и т. д.), пока вы не отпустите клавишу, после чего произойдет событие KeyUp .
Событие KeyPress может включать любой печатный символ клавиатуры, клавишу Ctrl в сочетании с символом стандартного алфавита или специальным символом, а также клавишу Enter или Backspace. Используйте процедуры обработки событий KeyDown и KeyUp для обработки любых нажатий клавиш, не распознанных событием KeyPress , таких как функциональные клавиши, клавиши навигации и любые их сочетания с клавишами-модификаторами клавиатуры (клавишами ALT, SHIFT или CTRL). В отличие от событий KeyDown и KeyUp , событие KeyPress не указывает на физическое состояние клавиатуры; вместо этого он указывает символ ANSI, соответствующий нажатой клавише или сочетаниям клавиш.
KeyPress интерпретирует верхний и нижний регистры каждого символа как отдельные коды клавиш и, следовательно, как два отдельных символа.
Примечание.
Клавиша BACKSPACE входит в набор символов ANSI, а клавиша DELETE — нет. Если вы удаляете символ в элементе управления с помощью клавиши Backspace, вы вызываете событие KeyPress ; если вы нажмете клавишу DELETE, то нет.
События KeyDown и KeyPress происходят при нажатии или отправке клавиши ANSI. Событие KeyUp возникает после любого события элемента управления, вызванного нажатием или отправкой клавиши. Если в результате нажатия клавиши фокус перемещается с одного элемента управления на другой, событие KeyDown происходит для первого элемента управления, а события KeyPress и KeyUp — для второго.
Например, если перейти к новой записи и ввести символ в первом элементе управления записи, возникнут следующие события:
- Текущий (для новой записи)
- ВВОД (для первого элемента управления в новой записи)
- GotFocus (для элемента управления)
- KeyDown (для элемента управления)
- Нажатие клавиши (для элемента управления)
- BeforeInsert (для новой записи в форме)
- Изменить (для элемента управления, будь то текстовое поле или поле со списком)
- KeyUp (для элемента управления)
Пример
В приведенном ниже примере текст, введенный в текстовое поле, преобразуется в верхний регистр по мере ввода текста по одному знаку за раз.
Чтобы проверить пример, добавьте следующую процедуру обработки событий в форму, содержащую текстовое поле с именем ShipRegion.
Private Sub ShipRegion_KeyPress(KeyAscii As Integer)
Dim strCharacter As String
' Convert ANSI value to character string.
strCharacter = Chr(KeyAscii)
' Convert character to upper case, then to ANSI value.
KeyAscii = Asc(UCase(strCharacter))
End Sub
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.