Getsuyodev, Programming is mainly used when constructing an application. Programming requires knowledge of application domains, algorithms, and programming language expertise. Programming can be developed in different logic based on developer knowledge.

TQ – événements

Thèmes des Questions – C# (C Sharp)



événements Dans le programme ci-contre, la classe TableEvent contient un tableau de string et un indexeur en lecture et écriture.

public class TableEvent {
private string[ ] table = {“aa”,”bb”,”cc”,”dd”,”ee”};
public virtual string this[int index] {
get { return table[index]; }
set { table[index] = value; }
}
}

On se propose de rendre cette classe TableEvent sensible à toute modification d’un élément du tableau de string en créant un événement Changer dans la classe TableEvent. Cet événement contiendra des informations sur le rang, l’ancienne valeur et la nouvelle valeur de la chaîne modifiée dans le tableau interne, ces informations seront contenues dans l’événement dont la classe est nommée ChangerEventArgs.

Dans la classe Exercice on crée un gestionnaire de cet événement et on abonne l’objet de classe TableEvent à ce gestionnaire de telle manière que lors de l’exécution de la méthode Main on obtienne l’affichage suivant :

Complétez le programme de gauche pour qu’il s’exécute correctement en remplaçant les “………..” par des instructions appropriées.

modification dans la liste au rang : 0
ancienne valeur =  aa, changée en : xxxx

modification dans la liste au rang : 4
ancienne valeur =  ee, changée en : yyy
using System;
 //-- classe d'informations personnalisées sur l'événement :
 public class ChangerEventArgs : EventArgs 
 {
 public int infoRang ;
 public string oldValue, newValue;
 public ChangerEventArgs (int rang, string oldStr, string newStr) 
 {
 infoRang = rang ;
 oldValue = oldStr;
 newValue = newStr;
 }
 }
 //-- déclaration du type délégation normalisé :
 public delegate void ChangerEventHandler ( object sender, ChangerEventArgs e );
 public class TableEvent
 {
 private string[ ] table =
 {
 "aa","bb","cc","dd","ee"
 };
 public virtual string this[int index]
 {
 get 
 {
 return table[index];
 }
 set 
 {
 …………
 table[index] = value;
 }
 }
 //-- déclaration d'une référence event de type délégué :
 public event  ChangerEventHandler Changer;
 //-- méthode publique qui lance l'événement :
 public void OnChanger(int rang, string oldStr, string newStr ) 
 {
 …………
 }
 }
 class Exercice
 {
 static public void Changer_liste( object sender, ChangerEventArgs e ) 
 {
 //-- gestionnaire d'événement Changer: méthode de classe
 System.Console.WriteLine("\nmodification dans la liste au rang : "+e.infoRang );
 System.Console.WriteLine("ancienne valeur =  "+e.oldValue+", changée en : "+e.newValue); 
 }
 public static void Main( ) 
 {
 TableEvent  liste = new TableEvent( );
 //-- abonnement au gestionnaire :
 liste.Changer += new ChangerEventHandler( Changer_liste );
 liste[0]="xxxx";
 liste[4]="yyy";
 Console.ReadLine( );
 }
 }

Comments are closed, but trackbacks and pingbacks are open.

This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish. Accept Read More