| netlib.narod.ru | < Назад | Оглавление | Далее > |
Значительная часть функциональности клавиатуры реализована в классе Control. Он поддерживает следующие события и методы для обработки нажатия и отпускания клавиш:
События Control (выборочно)
| Событие | Метод | Делегат | Аргумент |
| KeyDown | OnKeyDown | KeyEventHandler | KeyEventArgs |
| KeyUp | OnKeyUp | KeyEventHandler | KeyEventArgs |
Как и в любом классе, производном от Control (например, в Form), методы OnKeyDown и OnKeyUp можно переопределить:
protected override void OnKeyDown(KeyEventArgs kea)
{
...
}
protected override void OnKeyUp(KeyEventArgs kea)
{
...
}
Это обычный способ обработки событий клавиатуры в классе, производном от Form.
События, возникающие при нажатии и отпускании клавиш, также можно обрабатывать в объектах, порожденных от класса Control или его потомков. Но сначала нужно определить методы как делегаты KeyEventHandler:
void MyKeyDownHandler(object objSender, KeyEventArgs kea)
{
...
}
void MyKeyUpHandler(object objSender, KeyEventArgs kea)
{
...
}
Затем — зарегистрировать обработчики событий клавиш:
cntl.KeyDown += new KeyEventHandler(MyKeyDownHandler); cntl.KeyUp += new KeyEventHandler(MyKeyUpHandler);
Независимо от того, как это сделано, при нажатии или отпускании клавиши вы получите объект KeyEventArgs с такими свойствами:
Свойства объекта KeyEventArgs
| Тип | Свойство | Доступ | Комментарий |
| Keys | KeyCode | Чтение | Идентифицирует клавишу |
| Keys | Modifiers | Чтение | Идентифицирует состояния регистра |
| Keys | KeyData | Чтение | Комбинация KeyCode и Modifiers |
| bool | Shift | Чтение | Равно true, если нажата клавиша Shift |
| bool | Control | Чтение | Равно true, если нажата клавиша Ctrl |
| bool | Alt | Чтение | Равно true, если нажата клавиша Alt |
| bool | Handled | Чтение/запись | Устанавливается обработчиком события (изначально равно false) |
| int | KeyValue | Чтение | Возвращает KeyData в виде целочисленного значения |
Здесь куча избыточной информации. Из всех этих свойств нужны только KeyData и Handled, а значения остальных свойств можно вывести из KeyData. Но эта избыточность удобна: вероятно, вы обнаружите, что чаще всего используете именно свойства KeyCode, Shift, Control и Alt.
Первые три свойства относятся к одному типу — очень важному перечислению Keys. Свойство KeyCode сообщает, какая клавиша нажата (и это самое важное), свойство Modifiers — нажаты ли также клавиши Alt, Ctrl или Shift. Свойство KeyData комбинирует значения KeyCode и Modifiers, a Shift, Control и Alt дублируют данные свойства Modifiers логическими значениями. Иногда элемент управления устанавливает свойство Handled как true, чтобы указать родительскому объекту, что событие клавиатуры используется им и не должно передаваться родительскому объекту. KeyValue возвращает ту же информацию, что и KeyData, но в виде целых чисел, а не значений перечисления Keys.
| netlib.narod.ru | < Назад | Оглавление | Далее > |