Событие Form.KeyPress (Access)
Событие KeyPress возникает, когда пользователь нажимает и отпускает клавишу или комбинацию клавиш, соответствующую коду ANSI, в то время как форма или элемент управления имеет фокус. Это событие также возникает при отправке нажатия клавиши ANSI в форму или элемент управления с помощью действия SendKeys в макросе или инструкции SendKeys в Visual Basic.
Синтаксис
expression. KeyPress (KeyAscii)
выражение: переменная, представляющая объект Form.
Параметры
Имя | Обязательный или необязательный | Тип данных | Описание |
---|---|---|---|
KeyAscii | Обязательный | Integer | Возвращает числовой код ключа ANSI. Аргумент KeyAscii передается по ссылке; при изменении объекта отправляется другой символ в объект . Установка аргумента KeyAscii значения 0 отменяет нажатие клавиши, чтобы объект не распознавал нажатие клавиши. |
Замечания
Чтобы выполнить макрос или процедуру события при возникновении этого события, задайте для свойства OnKeyPress имя макроса или [Процедура события].
Объект с фокусом получает все нажатия клавиш. Форма может быть в фокусе, только если на ней нет элементов управления или все ее видимые элементы управления недоступны.
Форма также будет получать все события клавиатуры, даже те, которые происходят для элементов управления, если для свойства KeyPreview формы задано значение Да. При этом параметре свойства все события клавиатуры происходят сначала для формы, а затем для элемента управления, на который установлен фокус. Вы можете отвечать на определенные клавиши, нажатые в форме, независимо от того, какой элемент управления имеет фокус. Например, может потребоваться, чтобы сочетание клавиш CTRL+X всегда выполняло одно и то же действие в форме.
Если вы нажимаете и удерживаете клавишу ANSI, события KeyDown и KeyPress чередуются несколько раз (KeyDown, KeyPress, KeyDown, KeyPress и т. д.), пока вы не отпустите ключ, а затем произойдет событие KeyUp .
Событие KeyPress может включать любой печатный символ клавиатуры, клавишу CTRL в сочетании с символом из стандартного алфавита или специальным символом, а также клавишу ВВОД или 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 .
Например, если перейти к новой записи и ввести символ в первом элементе управления в записи, происходят следующие события:
- Current (для новой записи)
- Ввод (для первого элемента управления в новой записи)
- GotFocus (для элемента управления)
- KeyDown (для элемента управления)
- KeyPress (для элемента управления)
- 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 и обратная связь.