Событие CommandButton.KeyPress (Access)

Событие 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 и обратная связь.