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


* При перепечатке материалов ссылка на 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

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

Модификаторы доступа к типам
Делегаты CTS
Оповещение пользователя об ошибках ввода
Отладка элементов управления
Перечисления CTS
.NET Framework и языки программирования
Формирование запросов SQL во время выполнения
Пошаговое исполнение кода
Обеспечение совместимости с замещенными или скрытыми членами
Извлечение и обновление данных с помощью объектов DataAdapter и DataSet
Применение типов данных
Локализация формы
Редактор файловой системы
Blend PDF with Silverlight
Объявление методов
| .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's Top100

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

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