Implémentation de gestionnaires d’événements
Introduction
Les événements surviennent au cours de l’exécution de l’application. Chaque contrôle, y compris les formulaires, peut déclencher divers événements suite à une action de l’utilisateur. Par exemple, lors du clic sur un contrôle de type Button, un événement Click est déclenché. Si des méthodes, appelées gestionnaires d’événements, sont abonnées à cet événement, elles seront exécutées.
Chaque contrôle possède un événement par défaut. Double cliquez sur un contrôle pour que Visual Studio crée le gestionnaire d’événements associé. Pour la plupart des contrôles, il s’agit de l’événement Click.
La création de gestionnaires d’événements
Double cliquez sur l’élément de menu Serveur Mail du formulaire Main. Visual Studio ouvre le fichier de code associé avec l’implémentation de base du gestionnaire d’événements :
private void MailServerMenu_Click(object sender, EventArgs e)
{
}
La méthode est marquée avec le mot-clé private. Elle prend en premier paramètre un objet de type object qui représente l’objet qui a levé l’événement et, en second paramètre, un objet de type EventArgs contenant des informations supplémentaires sur l’événement.
Ajoutez le code suivant au gestionnaire d’événements :
new MailServerSettings().ShowDialog();
Cette instruction crée une nouvelle instance d’objet de type MailServerSettings et l’affiche de manière modale. Pour tester le gestionnaire d’événements, il suffit de lancer l’application ([F5]) et de cliquer sur le menu Serveur Mail. Si vous utilisez le raccourci-clavier ou la touche d’accès rapide qui ont été définis, l’événement est aussi déclenché.
Les gestionnaires d’événements avancés
1. Un gestionnaire pour plusieurs événements
Un gestionnaire peut être abonné à plusieurs événements différents. C’est utile lorsque plusieurs objets ou contrôles doivent déclencher la même action et cela évite de créer plusieurs gestionnaires identiques.
L’association se fait comme à l’habitude, en associant à l’événement un délégué pointant vers la méthode, sauf que le délégué est identique pour les deux événements :
this.Valid.Click += new EventHandler(this.Valid_Click);
this.Cancel.Click += new EventHandler(this.Valid_Click);
Vous pouvez aussi commencer par déclarer et instancier le délégué puis l’associer à plusieurs événements :
EventHandler newHandler = new EventHandler(this.Valid_Click);
this.Valid.Click += newHandler;
this.Cancel.Click += newHandler;
Comme plusieurs contrôles déclenchent le même événement, la distinction des actions à effectuer peut se faire grâce au paramètre sender qui est passé au gestionnaire d’événements :
private void Valid_Click(object sender, EventArgs e)
{
MessageBox.Show((sender...