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
Sommaire→WebForms→EvénementsGé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 ClassIl 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 ClassPour 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 SubRemarques
- 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.



