Урок 3. Добавляем событие
Автор: admin | 14 Июнь 2008 – 14:47 -Урок 3. Добавляем событие
У любого компонента могут присутствовать свойства (это мы уже посмотрели, как делать), методы (это будет на следующих уроках) и события (которыми мы как раз сейчас и займемся).
Событие – это уведомление от компонента, в котором он информирует кого-либо, что с ним что-то произошло. Типичный пример события – это щелчок на кнопке. В этом случае кнопка информирует свой контейнер (т. е. форму, на которой она расположена), что на ней щелкнули и контейнер выполняет код, предназначенный для выполнения этом случае. Обратите внимание, что в этом случае код выполяемый при возникновении события находится не в самом компоненте, а в другом месте (контейнере в данном случае). Т. е. разработчик компонента в принипе не знает, что будет выполняться при возникновении события, и будет ли выполняться вообще. Задача разработчика компонента – только это событие возбудить, а вот обработка этого события – это уже не его дело.
Итак, сейчас мы добавим событие WrongColor, которое будет возникать, когда пользователь установит цвет надписи, совпадающей с цветом фона. Надпись будет не видна, и в этом случае и возникнет добавленное нами событие.
Приступаем к коду. Вот что вам надо добавить в класс компонента:
...
// Объявление делегата.
public delegate void WrongColorDelegate();
// Объявление события на основе делегата.
public event 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:
private void userControl11_WrongColor() { MessageBox.Show("Wrong сolor!"); }
Для испытаний нам еще надо где-то установить неправильное значение свойства LabelColor для нашего компонента. Например, в обаботчике некоторой кнопки:
private void button1_Click(object sender, System.EventArgs e) { userControl11.LabelColor = BackColor; }
Запускаем программу, нажимаем на кнопку – появляется messagebox, который мы написали в обработчике события.
Tags: button, ForeColor, LabelColor, MessageBox, Parent, sender, userControl, WrongColor, WrongColorDelegate
Находится в Компоненты C# | No Comments »
Ответить
Вы должны быть в системе, дабы комментировать.
