KeyPress

Событие происходит, когда пользователь нажимает и отпускает клавишу с определенным ANSI кодом.

Синтаксис

Sub Form_KeyPress(keyascii As Integer)
Sub Command1_KeyPress(
keyascii As Integer)
Sub Pic1_KeyPress(
keyascii As Integer)
Sub Text1_KeyPress(
keyascii As Integer)
Sub MText1_KeyPress(
keyascii As Integer)
Sub TextBox1_KeyPress(
keyascii As Integer)
Sub Check1_KeyPress(
keyascii As Integer)
Sub Opt1_KeyPress(
keyascii As Integer)
Sub Skin1_KeyPress(
keyascii As Integer)
Sub PBar1_KeyPress(
keyascii As Integer)

Части синтаксической последовательности для события KeyPress приведены в таблице:

Часть

Описание

1
Целое число, однозначно определяющее элемент управления, если он находится в массиве элементов управления
keyascii
Целое число, возвращающее стандартный ANSI код клавиши. Keyascii передается по ссылке. Его изменение посылает объекту другой символ. Замена keyascii на 0 прекращает обработку нажатия клавиши и объект не получает символа.

Примечания

Событие получает только объект, обладающий фокусом. Форма может получить событие только в том случае, если в ней нет видимых и разрешенных элементов управления, или если присвоено значение True свойства KeyPreview. Событие KeyPress может получать любые печатаемые символы, символы клавиши CTRL в сочетании с символом стандартного алфавита или один из специальных символов, а также клавиши ENTER или BACKSPACE. Процедура события KeyPress полезна для перехвата нажатий клавиш, вводимых в элементах управления Text или Combo. Она позволяет сразу же проверять допустимость ввода или форматировать символы при вводе. Изменение значения аргумента keyascii изменяет отображаемый символ.

Аргумент keyascii можно преобразовать в символ с помощью выражения:

Chr(KeyAscii)

После этого можно выполнить строковые операции и преобразовать символ снова в ANSI код, воспринимаемый элементом управления, с помощью выражения:

KeyAscii = Asc(char)

Для обработки клавиш, не распознаваемых KeyPress, таких как функциональные клавиши, клавиши редактирования, клавиши перемещения курсора и их сочетания с модификаторами, используются процедуры событий KeyDown и KeyUp. В отличие от событий KeyDown и KeyUp, событие KeyPress не показывает физического состояния клавиатуры – вместо этого оно передает код клавиши.

KeyPress интерпретирует верхний и нижний регистры каждого символа как различные коды клавиш, и, следовательно, как два различных символа. KeyDown и KeyUp интерпретируют верхний и нижний регистры каждого символа с помощью двух аргументов: keycode, указывающего на реальную клавишу (одной клавишей возвращаются 'A' и 'a') и shift, показывающего состояние shift+key, и потому возвращающий 'A' или 'a'.

Если присвоено значение True свойства KeyPreview, то форма получает событие раньше, чем элементы управления формы. Используйте свойство KeyPreview для создания глобальных программ обслуживания клавиатуры.

Замечание Код ANSI для комбинации клавиш CTRL+@ равен 0. Так как Visual Basic воспринимает значение keyascii, равное 0, как строку с нулевой длиной («»), то избегайте использования в приложениях комбинации клавиш CTRL+@.


Назад