netlib.narod.ru< Назад | Оглавление | Далее >

He теряйте связи с реальностью

Хотя программы Windows Forms, несомненно, получают много информации о нажатых клавишах, чаще всего они могут игнорировать большинство событий клавиатуры. Например, при обработке события KeyDown обычно можно не беспокоиться о событии KeyUp.

Программы Windows Forms часто игнорируют события с участием клавиш, генерирующих символы (ниже я расскажу об этом подробнее). Из этого можно сделать неправильный вывод, что всю информацию о клавиатуре можно извлекать из событий KeyDown и KeyUp и генерировать собственные коды символов.

Предположим, ваш обработчик события получает объект KeyEventArgs, у которого свойство KeyCode равно Keys.D3, а свойство Modifiers — Keys.Shift. Вы знаете что это за символ, не так ли? Это знак фунта (#), кодируемый в ASCII и Unicode значением 0x0023. Допустим, это так, но в раскладке клавиатуры для Великобритании клавиша 3 в верхнем регистре генерирует другой знак фунта — £.

Более серьезная проблема возникает с клавишей Caps Lock. Как сказано выше, в Windows Forms нет средств для проверки состояния Caps Lock. Можно узнать, когда пользователь нажимает или отпускает Caps Lock, но что, если на момент начала работы вашей программы эта клавиша уже включена?

Событие KeyDown особенно полезно для обработки клавиш управления курсором, функциональных клавиш, а также Insert и Delete. Однако функциональные клавиши часто используются как клавиши быстрого доступа к меню. Поскольку нажатия таких клавиш транслируются в события меню автоматически, нет нужды обрабатывать их самостоятельно. Часто функциональные клавиши также дублируют функциональность элементов меню. Программы, в которых определены функциональные клавиши, не дублирующие элементы меню, трудно назвать дружественными к пользователю (особенно когда эти клавиши используются в сочетании с Shift и Ctrl, как в великом множестве старых программ для MS-DOS, таких как WordPerfect или Microsoft Word).

Подытожим сказанное: чаще всего придется обрабатывать события KeyDown для клавиш управления курсором, Insert и Delete. При использовании этих клавиш можно проверить состояние модификаторов свойством Modifiers объекта KeyEventArgs. Программы часто используют клавишу Shift в сочетании с клавишами управления курсором, например, в текстовых процессорах для расширения области выделения в документе, a Ctrl часто служит для изменения значений клавиш управления курсором. Например, в сочетании со «стрелкой вправо» клавиша Ctrl перемещает каретку вправо не на один символ, а на целое слово.


netlib.narod.ru< Назад | Оглавление | Далее >

Сайт управляется системой uCoz