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

У кого фокус?

Клавиатура в Windows — разделяемый ресурс. Вводимую информацию все приложения получают с одной и той же клавиатуры, хотя у некоторых клавиш должен быть единственный получатель. В случае программ Windows Forms этим получателем должен быть объект типа Control (класса, в котором реализована обработка клавиатуры) или его потомок, например Form.

Объект, получающий событие клавиатуры, обладает фокусом ввода (input focus). Это понятие тесно связано с понятием активной формы (active form). Обычно активную форму легко определить. Часто это расположенная поверх остальных на рабочем столе форма с подсвеченным заголовком (если таковой есть). Если вместо заголовка у активной формы рамка диалогового окна, то подсвечивается она. Если активная форма в данный момент свернута, ее окно на панели задач отображается как нажатая кнопка.

Активная форма доступна из единственного статического свойства, реализованного в Form:


Статическое свойство объекта Form



Тип Свойство Доступ

Form ActiveForm Чтение


Однако это свойство возвращает объект, а не null, только если активная форма — часть нашего приложения. Оно не может получать объекты, созданные другими приложениями!

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


Методы Form (выборочно)



void Activate()


Обычно, если эта форма не самая верхняя на рабочем столе, данный метод заставит Windows сделать так, чтобы окно этой формы на панели задач стало мигать для привлечения внимания пользователя, который должен расположить эту форму поверх остальных окон и сделать ее активной. Кроме того, в классе реализованы два события, связанные с активной формой:


События Form (выборочно)



Событие Метод Делегат Аргумент

Activated OnActivated EventHandler EventArgs
Deactivate OnDeactivate EventHandler EventArgs


Я решил упомянуть об этих свойствах, методах и событиях именно сейчас, так как они требуются не часто: программам редко приходится вмешиваться в активизацию собственных форм.

Фокус ввода — совсем другое дело. Если у активной формы есть дочерние элементы управления (расположенные в ее клиентской области подобно элементу управления Panel в примере из главы 4), то либо один из этих элементов управления, либо сама форма должна быть в фокусе. Элементы управления по-разному показывают, что они в фокусе: вокруг текста кнопки выводится точечная линия, а в текстовом поле — мигающая каретка. Ниже (в этой главе и следующих) мы еще вернемся к обсуждению вопросов, связанных с фокусом ввода.


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

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