Рейтинговые книги
Читем онлайн ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание - Эндрю Троелсен

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 166 167 168 169 170 171 172 173 174 ... 259

 if (e.Button == MouseButtons.Left) MessageBox.Show("Щелчок левой кнопки");

 if (e.Button == MouseButtons.Right) MessageBox.Show("Щелчок правой кнопки");

 if (e.Button == MouseButtons.Middle) MessageBox.Show("Щелчок средней кнопки");

}

Ответ на события клавиатуры

Обработка ввода с клавиатуры почти идентична обработке событий мыши. cобытия KeyUp и KeyDown работают в паре с делегатом KeyEventHandler, который может указывать на любой метод, получающий объект общего вида в качестве первого параметра, и KeyEventArgs – в качестве второго.

void MyKeyboardHandler(object sender, KeyEventArgs e);

Описания членов KeyEventArgs предлагаются в табл. 19.7.

Таблица 19.7. Свойства типа KeyEventArgs

Свойство Описание Alt Содержит значение, являющееся индикатором нажатия клавиши ‹Alt› Control Содержит значение, являющееся индикатором нажатия клавиши ‹Ctrl› Handled Читает или устанавливает значение, являющееся индикатором полного завершения обработки события обработчиком KeyCode Возвращает клавишный код для события KeyDown или события KeyUp Modifiers Указывает, какие модифицирующие клавиши были нажаты (‹Ctrl›, ‹Shift› и/или ‹Alt›) Shift Содержит значение, являющееся индикатором нажатия клавиши ‹Shift›

Измените объект MainForm, чтобы реализовать обработку события KeyUp. В окне сообщения отобразите название нажатой клавиши, используя свойство KeyCode.

public class MainForm: Form {

 public MainForm() {

  …

  // Для отслеживания событий KeyUp.

  KeyUp += new KeyEventHandler(MainForm_KeyUp);

 }

 private void MainForm_KeyUp (object sender, KeyEventArgs e) {

  MessageBox.Show(e.KeyCode.ToString(), "Нажата клавиша!");

 }

}

Скомпилируйте и запустите программу. Теперь вы должны иметь возможность не только определить, какой кнопкой мыши был выполнен щелчок, но и то, какая была нажата клавиша на клавиатуре.

На этом мы завершим обсуждение функциональных возможностей базового класса Control и перейдем к обсуждению роли Form.

Исходный код. Проект ControlBehaviors размещен в подкаталоге, соответствующем главе 19.

Функциональные возможности класса Form

Класс Form обычно (но не обязательно) является непосредственным базовым классом для пользовательских типов Form. В дополнение к большому набору членов, унаследованных от классов Control, ScrollableControl и ContainerControl, тип Form предлагает свои собственные функциональные возможности, в частности для главных окон, дочерних окон MDI и диалоговых окон. Давайте сначала рассмотрим базовые свойства, представленные в табл. 19.8.

Таблица 19.8. Свойства типа Form

Свойства Описание AcceptButton Читает или устанавливает информацию о кнопке, которая будет "нажата" (в форме), когда пользователь нажмет клавишу ‹Enter› ActiveMDIChild IsMDIChild IsMDIContainer Используются в контексте МDI-приложения CancelButton Читает или устанавливает информацию о кнопочном элементе управления, который будет "нажат", когда пользователь нажмет клавишу ‹Esc› ControlBox Читает или устанавливает значение, являющееся индикатором наличия у формы экранной кнопки управления окном FormBorderStyle Читает или устанавливает значение, задающее стиль границы формы (в соответствии с перечнем FormBorderStyle) Menu Читает или устанавливает информацию о стыковке меню в форме MaximizeBox MinimizeBox Используются для информации о наличии у формы кнопок минимизации и максимизации окна ShowInTaskbar Указывает, будет ли форма видимой в панели задач Windows StartPosition Читает или устанавливает значение, задающее начальную позицию окна формы (в соответствии с перечнем FormStartPosition) WindowState Указывает (в соответствии с перечнем FormWindowState), в каком виде должна отображаться форма при запуске

В дополнение к ожидаемым обработчикам событий с префиксом On, предлагаемым по умолчанию, в табл. 19.9 предлагается список некоторых базовых методов, определенных типом Form.

Таблица 19.9. Основные методы типа Form

Метод Описание Activate() Активизирует форму и предоставляет ей фокус ввода Close() Закрывает форму CenterToScreen() Размещает форму в центре экрана LayoutMDI Размещает все дочерние формы (в соответствии с перечнем LayoutMDI) в рамках родительской формы ShowDialog() Отображает форму в виде модального диалогового окна. Более подробно о программировании диалоговых окон говорится в главе 21

Наконец, класс Form определяет ряд событий, связанных с циклом существования формы. Основные такие события описаны в табл. 19.10.

Таблица 19.10. Подборка событий типа Form

События Описание Activated Происходит при активизации формы, т.е. при получении формой фокуса ввода Closed, Closing Используются для проверки того, что форма закрывается или уже закрыта Deactivate Происходит при деактивизации формы, те. когда форма утрачивает текущий фокус ввода Load Происходит после того, как форма размещается в памяти, но пока остается невидимой на экране MDIChildActive Генерируется при активизации дочернего окна

Цикл существования типа Form

Если вы имеете опыт программирования интерфейсов пользователя с помощью таких пакетов разработки, как Java Swing, Mac OS X Cocoa или Win32 АРI, вы должны знать, что "оконные типы" поддерживают множество событий, происходящих в различные моменты цикла существования таких типов. То же самое можно сказать и о типах Windows Forms. Вы уже видели, что "жизнь" формы начинается тогда, когда вызывается конструктор типа, перед его передачей методу Application.Run().

После размещения соответствующего объекта в управляемой динамической памяти среда разработки приложений генерирует событие Load. В обработчике событий Load можно настроить вид и поведение формы, подготовить содержащиеся в форме дочерние элементы управления (окна списков, деревья просмотра и т.д.), организовать доступ к ресурсам, необходимым для работы формы (установить связь с базами данных, создать агенты для удаленных объектов и т.д.).

Следующим событием, генерируемым после события Load, является событие Activated. Это событие генерируется тогда, когда форма получает фокус ввода, как активное окно на рабочем столе. Логическим "антиподом" события Activated является (конечно же) событие Deactivate, которое генерируется тогда, когда форма утрачивает фокус ввода, становясь неактивным окном. Легко догадаться, что события Activated и Deactivate в цикле существования формы могут генерироваться множество раз, поскольку пользователь может переходить от одного активного приложения к другому.

Когда пользователь решает закрыть соответствующую форму, по очереди генерируются еще два события: Closing и Closed. Событие Closing генерируется первым и дает возможность предложить конечному пользователю многими нелюбимое (но полезное) сообщение "Вы уверены, что хотите закрыть это приложение?". Этот шаг с требованием подтвердить выход полезен тем. что пользователю получает возможность сохранить данные соответствующего приложения перед завершением работы программы.

1 ... 166 167 168 169 170 171 172 173 174 ... 259
На этой странице вы можете бесплатно читать книгу ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание - Эндрю Троелсен бесплатно.
Похожие на ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание - Эндрю Троелсен книги

Оставить комментарий