FAQ ASP.NET/VB.NET
FAQ ASP.NET/VB.NETConsultez toutes les FAQ
Nombre d'auteurs : 38, nombre de questions : 369, dernière mise à jour : 16 juin 2021
Générer un évènement:
D'abord il faut créer les argument de l'événement :
Imports
System
Public
Class
MyEventArgs
Inherits
EventArgs
Private
myArg1 As
Boolean
Private
myArg2 As
Integer
Public
ReadOnly
Property
Arg1 As
Boolean
Get
Return
Me
.myArg1
End
Get
End
Property
Public
ReadOnly
Property
Arg2 As
Integer
Get
Return
Me
.myArg2
End
Get
End
Property
Public
Sun New
(
ByVal
arg1 As
Boolean
, ByVal
arg2 As
Integer
)
MyBase
.New
(
)
Me
.myArg1
=
arg1
Me
.myArg2
=
arg2
End
Sub
End
Class
Il faut aussi un délégué pour typer l'évènement
Public
Delegate
Sub
MyEventHandler
(
ByVal
sender As
Object
, ByVal
e As
MyEventArgs )
Ensuite il faut créer l'évenement et déclencher les delegates inscrits dans l'événement de la classe émétrice :
Public
Class
MyClass
' ...
Public
Event
MyEvent As
MyEventHandler
' la méthode protégée dérivable OnMyEvent invoque les délégués.
' L'émetteur (sender) est ici "Me", l'instance courante de la classe.
Protected
Overridable
Sub
OnMyEvent
(
ByVal
e As
MyEventArgs)
If
Not(
MyEvent Is
Nothing
) Then
RaiseEvent
MyEvent
(
Me
, e)
End
Sub
End
Class
Pour déclencher l'évenement à partir d'une methode de la classe émétrice :
boolValue As
Boolean
=
True
intValue As
Integer
=
0
Me
.OnMyEvent
(
New
MyEventArgs
(
boolValue, intValue))
' ou alors directement
RaiseEvent
MyEvent
(
Me
, New
MyEventArgs
(
boolValue, intValue))
Consommer un évènement
Enfin il faut créer et inscrire un délégué dans l'évènement pour que celui-ci soit appelé par la classe émétrice
Public
Class
Main
Private
mc As
New
MyClass
(
)
Public
Sub
New
(
)
' on assigne notre Delegate à l'évènement de l'objet
AddHandler
Me
.mc.MyEvent
, AddressOf
Me
.MyDelegate
End
Sub
Private
Sub
MyDelegate
(
ByVal
sender As
Object
, Byval
e As
MyEventArgs)
' traitement à effectuer
End
Sub
Remarques
- Un évènement est TOUJOURS multicast, on peut lui faire contenir plusieurs délégués.
- On ne peut pas changer les délégués contenus dans un évènement depuis du code extérieur à la classe émétrice si on ne connait pas le nom du délégué. La cause en est la méthode OnEvent qui masque le délégué EventHandler associé ce qui nous empeche d'obtenir la méthode GetInvocationList() du délégué associé à l'évènement.