IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

FAQ ASP.NET/C#

FAQ ASP.NET/C#Consultez toutes les FAQ

Nombre d'auteurs : 39, nombre de questions : 371, dernière mise à jour : 15 juin 2021 

 
OuvrirSommaireWebFormsEvénements

Générer un évènement:

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

 
Sélectionnez
public class MyEventArgs : EventArgs
{ 
	// readonly permet de verouiller les arguments apres le constructeur
	private readonly bool myArg1 ;
	private readonly int myArg2;
 
	//Constructeur
	public MyEventArgs(bool Arg1, int Arg2)
	{
		this.myArg1 = Arg1;
		this.myArg2 = Arg2;
	}
 
	public int Arg2
	{     
		get { return myArg2; }     
	}
 
	public bool Arg1
	{
		get { return myArg1; }
	}
}

Il faut aussi un délégué pour typer l'évènement

 
Sélectionnez
public delegate void MyEventHandler(object sender, MyEventArgs e);

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 MyEventHandler MyEvent;

	// la méthode protégé surchargeable OnMyEvent invoque les délégués. 
	// L'emeteur (Sender) est toujours "this", l'instance courante de la classe.
	protected virtual void OnMyEvent(MyEventArgs e)
	{   
		if (MyEvent != null)
		{
			// invoque les délégués de l'événement.
			MyEvent(this, e);
		}
	}
}

Pour déclencher l'évenement à partir d'une methode de la classe émétrice :

 
Sélectionnez
// bool bolMaValeur;
// int intMaValeur;
OnMyEvent(new MyEventArgs(bolMaValeur, intMaValeur));

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
class Main
{
	MyClass mc = new MyClass();
	public Main()
	{
		// on assigne notre delegate a l'événement de l'objet
		mc.MyEvent += new MyEventHandler(this.MyDelegate);
	}

	public void MyDelegate(object Sender, MyEventArgs e)
	{
		// traitement a effectuer
	}
}

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 ni 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.