Visual C#. Создание компонентов Урок 3. Добавляем событие
У любого компонента могут присутствовать свойства (это мы уже посмотрели, как делать), методы (это будет на следующих уроках) и события (которыми мы как раз сейчас и займемся).
Событие - это уведомление от компонента, в котором он информирует кого-либо, что с ним что-то произошло. Типичный пример события - это щелчок на кнопке. В этом случае кнопка информирует свой контейнер (т. е. форму, на которой она расположена), что на ней щелкнули и контейнер выполняет код, предназначенный для выполнения этом случае. Обратите внимание, что в этом случае код выполяемый при возникновении события находится не в самом компоненте, а в другом месте (контейнере в данном случае). Т. е. разработчик
компонента в принипе не знает, что будет выполняться при возникновении события, и будет ли выполняться вообще. Задача разработчика компонента - только это событие возбудить, а вот обработка этого события - это уже не его дело.
Итак, сейчас мы добавим событие WrongColor, которое будет возникать, когда пользователь установит цвет надписи, совпадающей с цветом фона. Надпись будет не видна, и в этом случае и возникнет добавленное нами событие.
Приступаем к коду. Вот что вам надо добавить в класс компонента:
...
// Объявление делегата.publicdelegatevoid WrongColorDelegate();
// Объявление события на основе делегата.publicevent WrongColorDelegate WrongColor;
// Обявление свойства.public System.Drawing.Color LabelColor {
{
get
{
...
}
set{
// Если существует контейнер для элемента// и если цвет label'а у компонента равен// цвету фона контейнера.if(Parent!=null && value == Parent.BackColor)
{
// Вызов события.
WrongColor();
}
else
{
label1.ForeColor = value;
}
}
}
...
Код должен быть ясен из комментариев - объявляем делагат, затем событие на основе этого делегата, потом изменяем код свойства LabelColor - а именно делаем проверку, не совпадает ли цвет контейнера с цветом label'а у компонена. Если совпадают, то цвет label'а не меняем, а просто возбуждаем событие.
Компилируем проект.
Теперь смотрим, как событие можно использовать в тестовом проекте. Для добавления обработчика для нашего события выделяем компонент на форме, после чего в окне Properties нажимаем на кнопку Events (кнопка с желтой молнией), после чего ищем в списке событий наше WrongColor.
Двойным щелчком добавляем обработчик, в котором, например, можно просто показать messagebox: