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

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

  Все выпуски  

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


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

C# и .NET. Уроки с сайта http://progs.biz

Рассылка №18

Основы C#. Урок 33. События.

Полные версии уроков (с картинками) можно найти по адресам
Урок 33. События.

Основы C#. Урок 33. События

На этом занятии мы с вами рассмотрим создание событий в C#. С помощью событий класс извещает, что в нем что-то произошло. События часто создаются в классах используемых для создания пользовательского интерфейса - например у кнопки есть событие, наступающее при щелчке на этой кнопке. События также могут присутствовать и в классах, не предназначенных для создания пользовательского интерфейча - например, они могут быть в классах консолького приложения. Именно для такого класса мы и рассмотрим создание события.

События в C# основаны на делегатах. Это означает, что событие имеет тип определенного делегата. Вот пример класса с событием в нем:

using System;
namespace test
{
    //Объявление делегата.
    delegate void EventHandler();
    //Объявление класса с событием.
    class MyEvent
    {
        //Объвление события на основе делегата.
        public event EventHandler f;
        //Объвление метода, в котором вызывается событие.
        public void func()
        {
            f();
        }
    }
    //Класс для тестирования события класса MyEvent.
    class Test
    {
        //Обработчик для события.
        public static void z()
        {
            Console.WriteLine("Вызов обработчика");
        }
        //Метод main.
        static void Main(string[] args)
        {
            //Создаем экземпляр класса с событием.
            MyEvent w=new MyEvent();
            //Добавление обработчика события.
            w.f+=new EventHandler(z);
            //Вызов метода, в котором вызывается событие.
            w.func();
        }
    }
}

Сначала мы в строке

    ...
    delegate void EventHandler();
    ...

объявляем делегат. Параметров у него нет (хотя могут и быть), тип - void.

Затем мы объявляем класс MyEvent, внутри которого объвляем событие f (имя произвольное):

    ...
    public event EventHandler f;
    ...

Синтаксис тут такой - модификатор доступа (у нас public), затем ключевое слово event, потом имя делегата, на основании которого мы создаем наше событие (у нас это EventHandler) и, наконец, имя произольное событие (f). Обратите внимание, что событие появится на вкладке ClassView.

Далее в нашем классе с событиями мы в некотором методе это событие вызываем:

        ...
        public void func()
        {
            f();
        }
        ...

Класс с событием создан. Далее мы пишем класс Test для тестирования события. В этом классе мы создаем обработчик z для события (имя обработчика произвольное). Этот метод мы объвляем как статический.

Далее мы объявляем экземпляр нашего класса MyEvent (того самого, в котором мы объявили событие):

    ...
    MyEvent w=new MyEvent();
    ...

Остается теперь указать, что за обработчик будет у события f класса MyEvent. Это мы делаем в строке

    ...
    w.f+=new EventHandler(z);
    ...

Этой строчкой мы указываем, что событие f будет обрабатывать метод z класса Test.

Если мы запустим наше программу, то на вызовется обработчик для события (т. е. выведется надпись "Вызов обработчика").

Обратите внимание, что обработчик для события мы пишем в тестовом классе (т. е. в классе Test, в котором мы объявили экземпляр нашего класса с событиями). Так мы делаем всегда, и не только на пратформе .NET.

Наверх
Рассылки Subscribe.Ru
Уроки по Visual C++ (MFC, платформа .NET)

Уроки по Visual C++.NET, MFC, ActiveX, COM-технологиям. Примеры программ. Каждый урок содержит информацию только по существу и расчитан на 10-20 минут. Уроки по каждой теме независимы.


Copyright Алексеев Игорь, 2002

Copyright сайт progs.biz, 2002



http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное