Мы знаем, что в некоторых программах есть сочетания клавиш (например: клавиша Shift для сворачивания, клавиша ESC для выхода, Ctrl+S для сохранения, Alt+x для выхода и т. д.). В прошлом было несколько сообщений о том, что это можно сделать с помощью Win32 API, но это слишком громоздко. Фактически, сам VB уже предоставил нам эту функцию.
Давайте создадим новую форму Form1. Для операций с клавиатурой мы видим три события: KeyPress(), KeyDown и KeyUp. Я представлю их соответственно ниже:
Событие KeyPress() возникает, когда пользователь нажимает и отпускает клавишу ANSI (ANSI — это видимые символы ASCII 1–127).
грамматика
частичное описание
object — это выражение объекта, значение которого «применяется» к объекту в списке.
индекс — целое число, которое однозначно идентифицирует элемент управления в массиве элементов управления (доступно только для массивов элементов управления).
keyascii — целое число, которое возвращает стандартный числовой код ключа ANSI. Keyascii передает объект по ссылке, делая возможным внесение в него изменений.
Отправьте другого персонажа. Изменение keyascii на 0 отменяет нажатие клавиши, и объект не получает никаких символов.
иллюстрировать
Объект с фокусом получает это событие. Форма может получить это событие, только если для свойства KeyPreview установлено значение True. Событие KeyPress может ссылаться на любой печатаемый символ клавиатуры, символ стандартного алфавита или один из нескольких специальных символов в сочетании с клавишей CTRL и клавишей ENTER или BACKSPACE. Процедура события KeyPress() полезна при перехвате нажатий клавиш, вводимых в элемент управления TextBox или ComboBox. Он может мгновенно проверять достоверность нажатий клавиш или символов форматирования по мере их ввода. Изменение значения параметра keyascii приведет к изменению отображаемых символов.
Вы можете использовать следующее выражение для преобразования параметра keyascii в символ:
иллюстрировать
В обоих случаях объект в фокусе получает все нажатия клавиш. Форма может получить фокус только в том случае, если у нее нет видимых и действительных элементов управления. Хотя события KeyDown() и KeyUp() можно применять к большинству клавиш, чаще всего они применяются к: клавишам с расширенными символами, таким как функциональные клавиши, клавиши навигации, клавиши-модификаторы клавиатуры и комбинации клавиш, отличающие цифровую клавиатуру от обычной цифровой клавиши; когда вам нужно отреагировать как на нажатие, так и на отпускание клавиши, вы можете использовать процедуры событий KeyDown и KeyUp.
На события KeyDown и KeyUp нельзя ссылаться в следующих ситуациях: форма имеет элемент управления CommandButton и клавишу ENTER, когда для свойства Default установлено значение True. Форма имеет элемент управления CommandButton, и когда для свойства Cancel установлено значение True, клавиши ESC, TAB, KeyDown и KeyUp используют два параметра для интерпретации прописных и строчных форм каждого символа: keycode — отображает физическую клавишу (замените A и a возвращает одну и ту же клавишу) и Shift-отображает состояние клавиши Shift+key и возвращает одно из A или a.
Если вам нужно проверить параметр сдвига, вы можете использовать константу сдвига, определенную в этом параметре. Эта константа имеет следующие значения:
Описание постоянного значения
vbShiftMask 1 бит клавиши HIFT
щит.
VbCtrlMask 2 клавиша CTRL
битовая маска.
VbAltMask 4 ключевых бита ALT
щит.
Эта константа действует как битовая маска, которую можно использовать для проверки любой комбинации клавиш.
Примечание. Если для свойства KeyPreview установлено значение True, форма получает это событие перед элементами управления в форме. Вы можете использовать свойство KeyPreview для создания глобальных процедур обработки клавиатуры.
Обладая вышеуказанными знаниями, мы можем создать идеальную программу с помощью сочетаний клавиш. Например, в программе нам нужно использовать Ctrl+S для сохранения, Shift для свертывания, Alt+X и ESC для выхода:
Сначала запустите VB и выберите новый EXE-файл, потяните TextBox в форме Form1 и установите для свойства KeyPreview формы Form1 значение True, дважды щелкните Form1, выберите событие KeyPress формы и введите следующий код: