Caracteristici ale evenimentelor in VB.NET

Evenimentul reprezinta un mesaj transmis de catre un obiect si care anunta aplicatia de producerea unui fapt.
Evenimentele sunt implementate folosind delegati […].

De exemplu, apasarea unui buton de comanda intr-o interfata grafica provoaca aparitia evenimentului Click. Evenimentul este tratat prin intermediul unei proceduri.
Evenimentele sunt declarate in cadrul claselor, structurilor, modulelor si interfetelor utilizand cuvantul rezervat Event.

Event Eveniment(ByVal IDArg As Integer)

Transmiterea mesajului asociat unui eveniment este denumita raising, realizandu-se in cadrul clasei, modulului sau a structurii. O clasa de obiecte derivata nu poate provoca transmiterea evenimentelor mostenite din clasa de baza. Specificatia utilizata pentru transmiterea mesajului este RaiseEvent.

RaiseEvent Eveniment(IDArg)

Un obiect capabil sa provoace transmiterea unui mesaj de eveniment poarta denumirea de sursa a evenimentului sau emitator de eveniment. Exemple de obiecte sursa de evenimente sunt obiectele definite de utilizator, controalele si formularele.
Aparitia unui eveniment are asociata o procedura denumita handler de eveniment. Inainte ca un handler de eveniment sa poata fi utilizat, trebuie sa se realizeze o asociere intre eveniment si handler-ul de eveniment. Acest lucru se realizeaza cu ajutorul specificatiilor Handles sau AddHandler.
Handler-ii de evenimente sunt declarati cu ajutorul specificatiilor WithEvents si Handles. Evenimentele provocate de un obiect prin WithEvents pot fi manipulate cu orice subrutina cu specificatia Handles care precizeaza evenimentul. Asocierea eveniment-handler prin specificatia Handles este limitata prin realizarea asocierii la momentul compilarii.
O variabila definita cu specificatia WithEvents nu poate fi utilizata ca o variabila Object, specificandu-se denumirea clasei la momentului definirii.

Dim WithEvents ObEveniment As New ClsEveniment

ObEveniment este variabila declarata cu specificatia WithEvents, iar clasa de obiecte ClsEveniment contine declaratii de evenimente si proceduri de transmitere a mesajelor asociate evenimentelor.
Declararea unui handler de eveniment utilizeaza specificatia Handles, asociindu-se cu evenimente declarate in ClsEveniment.

Sub ObEveniment_HandlerEveniment() Handles ObEveniment.UnEveniment

Evenimentul UnEveniment este declarat in clasa ClsEveniment.
Specificatiile AddHandler si RemoveHandler sunt mai flexibile decat clauza Handles. Este permisa conectarea si deconectarea dinamica a evenimentelor cu unul sau mai multi handler-i la momentul executiei aplicatiei. Variabilele obiect nu mai trebuie declarate cu specificatia WithEvents.
AddHandler are doua argumente: denumirea unui eveniment dintr-o sursa de evenimente si o expresie evaluata la delegat.

AddHandler ObEveniment.EvenimentDoi, AddressOf Me.HandlerEveniment

RemoveHandler deconecteaza un eveniment de la un handler de eveniment si utilizeaza aceeasi sintaxa ca AddHandler.

RemoveHandler ObEveniment.EvenimentDoi, AddressOf Me.HandlerEveniment

Specificatia AddressOf returneaza adresa delegatului.