FAQ ASP.NET/VB.NETConsultez toutes les FAQ

Nombre d'auteurs : 38, nombre de questions : 369, dernière mise à jour : 30 mars 2017 

 
OuvrirSommaireWebFormsEvénements

Générer un évènement:

D'abord il faut créer les argument de l'événement :

 
Sélectionnez

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

 
Sélectionnez

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 :

 
Sélectionnez

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 :

 
Sélectionnez

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

 
Sélectionnez

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.

Créé le 1er février 2006  par doccpu, neguib
  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2007 Dotnet Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.