Page d'Accueil

Événements

 

Introduction

Excepté la classe Main de votre programme (la classe qui contient la méthode Main()), chaque classe est la plupart du temps censée interagir avec l'autre, pour demander les valeurs et les méthodes des autres classes ou pour fournir à d'autres classes certaines valeurs ou le service dont elles ont besoin. Quand une classe A demande une valeur ou un service à une autre classe B, la classe A est désigné sous le nom de client de la classe B. Ce rapport est important pas simplement parce qu'il établit un rapport entre les deux classes mais également parce que la classe B devrait être prête à fournir la valeur ou le service dont un client a besoin à un certain moment.

Tandis qu'une classe B est invitée à fournir certaines valeurs ou méthodes à une autre classe A, beaucoup de choses peuvent se produire. En fait, il y a un ordre dans lequel les choses devraient se passer. Par exemple, pendant la vie d'un programme, c'est-à-dire, pendant qu'un programme fonctionne, une classe peut contenir une valeur qu'elle peut fournir à son client, mais à un autre moment, la valeur peut ne plus être disponible pour n'importe quelle raison ; rien d'étrange, c'est uniquement de cette foçon que cela se produit. Puisque différentes choses peuvent arriver à la classe B pendant que le programme fonctionne, et parce que seule la classe B se rendrait compte de cet état de fait, il doit pouvoir signaler aux autres classes quand il y a un changement. C'est la base des événements : Un événement est une action qui se produit sur un objet et l'affecte de manière que ses clients en soient avertis. Les événements sont la plupart du temps bien connus de ceux qui font la programmation graphique (GUI) car ils sont capables de « visualiser » leur travail dans Wndows controls et car ils peuvent accéder aux objets sur lesquels des actions se produisent et les objets qui doivent savoir quand ces actions se produisent. Toujours, parce que les événements sont traités dans C#, vous devriez vous rendre compte de leur fonctionnalité.

Bien que les événements soient la plupart du temps utilisés en programmation dans Windows controls, ils peuvent également être mis en application dans des applications de console.

Création d'événement

Un événement est déclaré comme une pseudo-variable mais basé sur un délégué. Par conséquent, pour déclarer un événement, vous devez avoir un délégué qui le mettrait en application. Voici un exemple :

using System;

delegate void dlgSimple();

class Exercise
{
	public static void Welcome()
	{
		Console.WriteLine("Welcome to the Wonderful World of C# Programming!");
	}
}

Pour déclarer réellement un événement, vous utiliser le mot-clé event avec la formule suivante :

[attributes] [modifiers] event type declarator;
[attributes] [modifiers] event type member-name {accessor-declarations};

Le facteur attributes peut être un attribut normal de C#.

Le modificateur peut être l'un ou une combinaison de mots-clés suivants : public, private, protected, internal, abstract, new, override, static, virtual, ou extern.

Le mot-clé event est exigé. Il est suivi du nom du délégué qui indique son comportement. Si l'événement est déclaré dans la classe Main, il devrait être statique. Comme tout dans un programme, un événement doit avoir un nom. Ceci permettrait aux clients de savoir quel événement (particulier) s'est produit. Voici un exemple :

using System;

delegate void dlgSimple();

class Exercise
{
    public static event dlgSimple Simply;

    public static void Welcome()
    {
	Console.WriteLine("Welcome to the Wonderful World of C# Programming!");
    }
}

Après la déclaration de l'événement, vous devez définir une méthode qui appelle l'événement. Voici un exemple :

using System;

delegate void dlgSimple();

class Exercise
{
    public static event dlgSimple Simply;

    public static void Welcome()
    {
	Console.WriteLine("Welcome to the Wonderful World of C# Programming!");
    }

    public static void SayHello()
    {
	Simply();
    }
}

Quand l'événement se produit, son délégué serait appelé. Ces spécifications sont désignées également sous le nom de connecter un événement. Pendant que l'événement se produit (ou les feux), la méthode qui met en application le délégué tourne. Ceci fournit la fonctionnalité complète pour l'événement et prépare l'événement à être utilisé. Avant d'utiliser un événement, vous devez le combiner à la méthode qui le met en application. Ceci peut être fait en passant le nom de la méthode au délégué approprié, comme nous avons appris en étudiant les délégués. Vous pouvez alors assigner cette variable au nom de l'événement en utilisant l'opérateur +=. Une fois que ceci est fait, vous pouvez appeler l'événement. Voici un exemple :

using System;

delegate void dlgSimple();

class Exercise
{
    public static event dlgSimple Simply;

    public static void Welcome()
    {
	Console.WriteLine("Welcome to the Wonderful World of C# Programming!");
    }

    public static void SayHello()
    {
	Simply();
    }

    static int Main()
    {
	Simply += new dlgSimple(Welcome);

	SayHello();

	return 0;
    }
}

Au lieu d'utiliser l'opérateur += en initialisant l'événement, vous pouvez mettre en application Add et remove de la classe event. Voici un exemple :

using System;

delegate void dlgSimple();

class Exercise
{
    public event dlgSimple Simply
    {
	add
	{
	    Simply += new dlgSimple(Welcome);
	}
	remove
	{
	    Simply -= new dlgSimple(Welcome);
	}
    }

    public void Welcome()
    {
	Console.WriteLine("Welcome to the Wonderful World of C# Programming!");
    }
}
  

Page d'Accueil Copyright © 2007, Yevol