Vos recrutements informatiques

700 000 développeurs, chefs de projets, ingénieurs, informaticiens...

Contactez notre équipe spécialiste en recrutement

FAQ ASP.NET/C#Consultez toutes les FAQ

Nombre d'auteurs : 39, nombre de questions : 371, 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

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