Отправляет email-рассылки с помощью сервиса Sendsay

Финансы. Инструкция

  Все выпуски  

Уроки по C# и .NET.


Информационный Канал Subscribe.Ru

Уроки по C#. Рассылки сайта progs.biz
Выпуск № 74
 
Начало > C# > Компоненты > Урок 3

Разработка Web-приложений на Visual Basic.NET и C#.NET.
Разработка Web-приложений на Visual Basic.NET и  C#.NET
Заказать на Озоне

Подробнее


Полные версии уроков (с картинками): урок 3.

Visual C#. Создание компонентов
Урок 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, который мы написали в обработчике события.

Рассылки сайта progs.biz
Visual C++, MFC
C# и .NET
VB.NET
ASP.NET new!
Win API
C/C++
Delphi
Java
HTML, PHP, mySQL, WEB-дизайн
Flash MX
C++ Builder
Ассемблер
SQL Server
DirectX
Обзор книг
Обзор программ
Новости сайта progs.biz


PARKING.RU. Качественный ВИРТУАЛЬНЫЙ ХОСТИНГ на платформе Windows(r): поддержка NET, многофункциональная панель управления, аренда бизнес-приложений, сертифицированные специалисты. Управляемый ВЫДЕЛЕННЫЙ ХОСТИНГ на платформе Windows(r): производительные серверы, профессиональная поддержка, аренда ПО Microsoft(r), безопасность, гарантии. http://www.parking.ru


Копирование любых материалов сайта без разрешения авторов и владельцев сайта запрещено.
© 2002-2005 сайт progs.biz
© 2002-2005 Алексеев Игорь

http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.prog.csharplessons
Отписаться

В избранное