Имя Пароль
Зарегистрироваться


* При перепечатке материалов ссылка на www.SeoLiga.ru обязательна! RSS



Реализация обработчиков событий
8 февраля 2009

Чтобы генерировать объявленное событие, необходимо связать с ним один или не-
сколько обработчиков. Обработчик события — это метод, который вызывается по-
средством делегата всякий раз, когда генерируется соответствующее событие. Что-
бы этот механизм работал, необходимо связать обработчики с обрабатываемыми
событиями. Если в программе на Visual Basic .NET генерировать событие, с кото-
рым не связан ни один обработчик, попросту ничего не произойдет; в Visual C# же
подобные действия закончатся ошибкой.
Подобно другим членам, события бывают как членами экземпляров, так и об-
щими (Shared) или статическими (static) членами. При создании обработчика для
события экземпляра нужно связать метод-обработчик и это событие, для чего не-
обходимо сначала создать объект. Общие (статические) события принадлежат клас-
су, а не его экземплярам, поэтому для создания обработчика такого события не тре-
буется предварительно создавать экземпляр класса.
Создание обработчиков событий в Visual Basic .NET
Обработчик события в Visual Basic .NET следует объявлять как процедуру (Sub), он
не может возвращать значения. Процедуру связывают с обрабатываемым ей собы-
тием при помощи ключевого слова AddHandler. После AddHandler следует имя со-
бытия и указатель на метод, с которым будет связано это событие. Указатель на
метод создают оператором AddressOf, например, так:
Visual Basic .NET
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs)
AddHandler myEvent, AddressOf myHandler
End Sub
Ключевое слово AddHandler не разрешается применять декларативно — только
внутри метода. В силу этих причин связь между событием и его обработчиком со-
здается только во время выполнения. Чтобы связь между обработчиком и событием
существовала на протяжении всего срока жизни объекта, следует поместить ключе-
вое слово AddHandler в конструктор объекта.
В Visual Basic .NET можно связывать обработчики с обрабатываемыми ими со-
бытиями и во время разработки. Для этого применяется конструкция Handles. При
этом объект-приемник события необходимо объявить с ключевым словом With-
Events, которое разрешает ему регистрироваться для уведомления о событиях объек-
та, указанного в поле WithEvents.
Конструкция Handles завершает объявление метода, в ней определяют событие
объекта, обрабатываемое этим методом, например:
Visual Basic .NET
Public Sub DisplayResults() Handles Account.CalculationComplete
Реализация опущена
End Sub
Создание обработчиков событий на Visual C#
В отличие от Visual Basic .NET, в Visual C# обработчикам событий разрешается воз-
вращать значение, которое можно присваивать переменной, как это делается при
вызове функции. Чтобы связать некоторый метод с событием, следует создать эк-
земпляр соответствующего делегата, ссылающегося на этот метод, и связать его с
событием при помощи оператора +=. Этот оператор также позволяет связать собы-
тие с существующим экземпляром делегата, например, так:
Visual C#
// Это пример предполагает наличие метода DisplayResults
// с сигнатурой делегата calculationDelegate.
// Создать экземпляр делегата, он необходим, чтобы
// связать событие с его обработчиком.
Account. CalculationComplete +- new calculationDelegate(DisplayResults);
// Связать событие с обработчиком при помощи существующего экземпляра делегата.
CalculationOelegate calc = new calculationDelegate(DisplayResults);
Account. CalculationComplete += calc;
Для событий элементов управления и классов из библиотеки базовых классов
.NET Framework предоставляются делегаты по умолчанию. Чтобы добавить обра-
ботчик для этих событий вручную, необходимо объявить новый делегат либо со-
здать новый экземпляр предопределенного типа-делегата. Например, с большин-
ством элементов управления из пространства имен System, Windows. Forms применя-
ется класс -делегат System, EventHandler. Ниже показан пример, иллюстрирующий
назначение обработчика событию Click элемента управления button 1:
Visual C#
buttonl. Click += new System. EventHandler(clickHandler);
В отличие от Visual Basic .NET, в Visual C# нет механизма для декларативного
связывания событий с их обработчиками.
^ Обработка событий в Visual Basic .NET
• При помощи ключевого слова AddHandler свяжите событие с методом, который
его будет обрабатывать; для получения указателя на метод воспользуйтесь опе-
ратором AddressOf. Помните, что сигнатуры события и его обработчика должны
совпадать.
• Другой вариант — связать метод с обрабатываемым им событием во время раз-
работки (при помощи ключевого слова Handles). При этом метод-обработчик
должен быть членом объекта, объявленного с ключевым словом With Events.
> Обработка событий в Visual C#
Создайте экземпляр делегата, соответствующего событию, и ссылающегося на
метод, который должен обрабатывать это событие, затем воспользуйтесь операто-
ром +=, чтобы связать событие с созданным экземпляром делегата.

Теги: .NET

Статьи по теме:

Стратегия оптимизации
Проверка на уровне поля
Установка и извлечение динамических свойств вручную
Обработка ошибок при обновлении базы данных
Достоинства сертификации Microsoft
Декларативная защита, основанная на ролях
Языки программирования .NET
Создание конфигурационного файла
Создание обработчиков событий элементов управления
Добавление элементов управления на панель Toolbox
Запись трассировочных данных в журнал событий
Защищенные члены
Реализация полиморфизма через наследование
Формы, элементы управления и меню
Общеязыковая исполняющая среда
| .NET | Pavel |
 


Пн Вт Ср Чт Пт Сб Вс
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31


     



Rambler

Данный сайт или домен продается ICQ: 403-353-727

© 2009 Seoliga.ru | .NET | Реализация обработчиков событий. Регион сайта: Москва и Санкт-Петербург