Программирование >>  Web ориентированные приложения 

1 2 3 [ 4 ] 5 6 7 ... 16


провождает значение клавиши, объединяясь с ним двоичной логической операцией ИЛИ . Таким образом, можно получить информацию о том, была ли одновременно нажата клавиша <Shift> или <Ctrl>. Свойство KeyValue - целое значение из перечисления Keys. Свойство Modifiers содержит значение типа Keys, представляющее нажатые модифицирующие клавиши. Если было нажато более одной такой клавиши, их значения объединяются операцией ИЛИ . События клавиш поступают в следующем порядке:

1. KeyDown

2. KeyPress

3. KeyUp

События Validating, Validated, Enter, Leave, GotFocus и LostFocus имеют отношение к получению фокуса элементами управления (т.е. когда становятся активными) и утере его. Это случается, когда пользователь нажатием клавиши <Tab> переходит к данному элементу управления либо выбирает его мышью. Может показаться, что события Enter, Leave, GotFocus и LostFocus очень похожи в том, что они делают. События GotFocus и LostFocus относятся к низкоуровневым, и связаны с событиями Windows WM SETFOCUS и WM KILLFOCUS. Обычно когда возможно, лучше использовать события Enter и Leave. События Validating и Validated возбуждаются при проверке данных в элементе управления. Эти события принимают аргумент CancelEventArgs. С его помощью можно отменить последующие события, установив свойство Cancel в true. Если вы разрабатываете собственный проверочный код, и проверка завершается неудачно, то в этом случае можно установить Cancel в true - тогда элемент управления не утратит фокус. Validating происходит во время проверки, а Validated - после нее. Порядок возникновения событий следующий:

1. Enter

2. GotFocus

3. Leave

4. Validating

5. Validated

6. LostFocus

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

Функциональность Windows

Пространство имен System.Windows.Forms - одно из немногих, полагающихся на функциональность операционной системы Windows. Класс Control - хороший тому пример. Если выполнить дизассемблирование System.Windows.Forms.dll, то можно увидеть список ссылок на класс UnsafeNativeMethods. Среда .NET Framework использует этот класс как оболочку для всех стандартных вызовов Win32 API. Благодаря возможности взаимодействия с Win32 API, внешний вид и поведение стандартного приложения Windows можно обеспечить средствами пространства имен System. Windows.Forms.

Функциональность, которая поддерживает взаимодействие с Windows, включает свойства Handle и IsHandleCreated. Свойство Handle возвращает IntPtr, содержащий HWND (дескриптор окна) элемента управления. Дескриптор окна - это HWND, уни-



кально идентифицирующий окно. Элемент управления может рассматриваться как окно, поэтому у него есть соответствующий HWND. Свойство Handle можно использовать для обращения к любым вызовам Win32 API.

Для получения доступа к внутренним сообщениям Windows можно переопределить метод WndProc. Метод WndProc принимает в качестве параметра объект Message. Этот объект представляет собой просто оболочку для сообщения окна. Он содержит свойства HWnd, LParam, WParam, Msg и Result. Если нужно, чтобы сообщение было обработано системой, его потребуется передать на обработку базовому методу base.WndProc(msg). Если же нужно обработать его в вашем приложении специальным образом, то передавать его этому методу не следует.

Прочая функциональность

Некоторые вещи, которые несколько сложнее классифицировать - это возможности привязки данных. Свойство BindingContext возвращает объект BindingManagerBase.

Коллекция DataBindings поддерживает ControlBindingsCollection, которая представляет коллекцию привязанных объектов элемента управления. Привязка данных обсуждается в главе 32.

CompanyName, ProductName и ProductVersions представляют данные о происхождении элемента управления и его текущей версии.

Метод Invalidate позволяет объявить видимую область элемента управления недействительной, чтобы инициировать ее перерисовку. Это можно сделать с целым элементом управления либо с его частью. После этого сообщение перерисовки отправляется методу WndProc этого элемента управления. Можно в то же время объявить недействительным любой дочерний элемент управления.

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

Стандартные элементы управления и компоненты

В предыдущем разделе описаны некоторые общие методы и свойства элементов управления. Здесь же мы рассмотрим различные стандартные элементы управления, поставляемые в составе .NET Framework, и объясним, какую дополнительную функциональность они предлагают. Среди примеров, которые доступны на прилагаемом компакт-диске, есть пример приложения по имени FormsSample. Это MDI-приложение (обсуждается позже), включающее форму frmControls, которая содержит многие элемента: управления с базовой функциональностью. На рис. 31.1 показан ее внешний вид.

Button

Класс Button представляет простую командную кнопку и наследуется от ButtonBase. Чаще всего требует написания кода обработки события Click. Следующий фрагмент кода реализует обработчик события Click. Когда выполняется щелчок на кнопке, появляется окно сообщения, отображающее имя кнопки.

private void btnTest Click(object sender, System.EventArgs e)

MessageBox.Show( Выполнен щелчок на + ((Button)sender).Name + . );




Not Default

Default

Рис. 31.1. Внешний вид формы frmControls приложения FormsSample

С помощью метода PerformClick можно эмулировать событие Click кнопки без необходимости действительного выполнения щелчка пользователем. Метод NotifyDefault принимает в параметре значение булевского типа и сообщает кнопке, чтобы она отобразила себя как кнопку по умолчанию. Обычно кнопка по умолчанию на форме имеет слегка утолщенную рамку.

Чтобы идентифицировать кнопку как кнопку по умолчанию, потребуется установить свойство AcceptButton формы равным ссылке на эту кнопку. После этого, если пользователь нажмет клавишу <Enter>, сгенерируется событие Click этой кнопки по умолчанию. На рис. 31.2 кнопка с меткой Default (По умолчанию) является кнопкой по умолчанию (обратите внимание на темную рамку).

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

Как Text, так и Image имеют свойство Align, предназначенное для выравнивания текста или изображения на поверхности кнопки. Свойство Align принимает значения типа перечисления ContentAlignment. Текст или изображение могут быть выровнены в комбинации по левой или правой границе кнопки либо по верхней или нижней границе.

Рис. 31.2. Кнопка с меткой Default является кнопкой по умолчанию



1 2 3 [ 4 ] 5 6 7 ... 16

© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки.
Яндекс.Метрика