Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лр3_Компоненты.doc
Скачиваний:
3
Добавлен:
01.09.2019
Размер:
761.86 Кб
Скачать

2.1.5. Добавление событий.

События позволяют компонентам общаться между собой и программой. Например, если форма хочет каким-то образом обрабатывать нажатие на кнопку, то ей необходимо обрабатывать событие Click этой кнопки. Каждая компонента имеет множество событий, позволяющих реагировать на изменения внутри компоненты или обрабатывать ее реакцию на внешние события (нажатие на клавиши, движения мыши, изменение размера и т.д.). Обычно обработчиками событий являются методы формы, на которой расположена компонента.

Для добавления события к компоненте необходимо:

  • Добавить описание переменной onGradientChange типа еvent.

  • Описываем событие из метода OnGradientChange() с типом EventHandler и аксессорами add и remove.

  • Вызываем событие из метода OnChangeProperties().

Тем не менее, перед вызовом обработчика события следует проверить, что обработчик onGradientChange не равен null. Аксессоры add и remove можно не указывать, если в этом нет необходимости, но тогда переменную onGradientChange нужно описывать с модификатором public.

В результате новое событие появится в редакторе свойств на вкладке Events (События). Для добавления обработчика достаточно щелкнуть на нем два раза.

// Листинг 5.4. Описание события onGradientChange.

public partial class GradientLabel : Label

{

private event EventHandler onGradientChange;

[Category("Gradient"), Description("Вызывается при изменении свойств заливки")]

public event EventHandler OnGradientChange

{

add{ onGradientChange += value; }

remove{ onGradientChange -= value; }

}

private void OnChangeProperties()

{

Invalidate();

if(onGradientChange!=null){ onGradientChange(this, new EventArgs()); }

}

}

2.2. Создание 2-го нестандартного элемента управления

Задача заключается в том, чтобы создать нестандартный элемент управления PreityClock, отображающий на форме красиво оформленные часы. Вы напишете реализацию и код, визуализирующий этот элемент управления, а также добавите в его конструктор код, инициализирующий свойства этого элемента управления. В завершение вы протестируете созданный элемент управления. Решение задач этого практикума находится в папке \Labs\Ch07\Solution на прилагаемом к книге компакт-диске.

2.2.1. Описание элемента управления

Необходимо создать нестандартный элемент управления под названием PrettyClock. Он относится к формируемым элементам управления (см. раздел 1.2.3). Следовательно, его следует создать на основе класса Control, написать для него соответствующий код, отвечающий за визуализацию этого элемента управления и открытие доступа к свойствам, управляющим его обликом. В завершение необходимо будет добавить таймер, чтобы создаваемый нами элемент управления мог служить в качестве часов.

2.2.2. Создание проекта

1. В меню File выберите команду New=>Project — откроется диалоговое окно New Project.

2. В окне New Project выберите шаблон Windows Application, назовите новый проект ControlTest и щелкните ОК.

3. В меню Project выберите команду Add New Item — откроется одноименное диалоговое окно.

4. В диалоговом окне Add New Item выберите Custom Control, назовите новый элемент управления PrettyClock и щелкните Add (Добавить) — к проекту будет добавлен новый нестандартный элемент управления.

5. В окне Solution Explorer щелкните правой кнопкой элемент управления PrettyClock и выберите из контекстного меню команду View Code — откроется окно Code. Обратите внимание, что метод OnPaint переопределен и содержит вместо реализации заглушку и комментарий, указывающий, что сюда нужно добавить код, выполняющий визуализацию.