Event Property Changed

Hello,
Je me suis posé la question toute à l'heure, et apparemment non, ça n'éxiste pas tout prêt :)
Je vais donc vous présenter une implémentation simple d'une classe avec une propriété qui lorsqu'elle est affectée, déclenche un évènement.

class StringWithPropEvent
{
    private String _value;
    public String Value
    {
        get { return _value; }
        set
        {
            if (value != _value)
            {
                _value = value;
                OnValueChanged(EventArgs.Empty);
            }
        }
    }
    public event EventHandler ValueChanged;

    protected virtual void OnValueChanged(EventArgs e)
    {
        if (ValueChanged != null)
        {
            ValueChanged(this, e);
        }
    }
}
Donc c'est tout bête, c'est une classe avec propriété privée String et son getter setter. Son getter est basique, son setter teste si la valeur attribuée est différente, si oui, on change la propriété et exécute la méthode OnValueChanged.
OnValueChanged raise l'event ValueChanged.
Un exemple d'utilisation de cette classe :
class Program
{
 static void Main(string[] args)
 {
  StringWithPropEvent str = new StringWithPropEvent();
  str.ValueChanged += new EventHandler(str_NameChanged);
  while (str.Value != "exit")
   str.Value = Console.ReadLine();
 }

 static void str_NameChanged(object sender, EventArgs e)
 {
  Console.WriteLine("String Changed : " + 
                      ((StringWithPropEvent)sender).Value);
 }
}
Encore une fois rien de compliqué, dans un projet Application Console, on instancie notre classe StringWithPropEvent créée précédemment on y ajoute un Handler sur l'event ValueChanged qui, je le rapelle est déclenché par le setter de sa propriété Value,
Ici, on boucle sur l'entrée de la console et à chaque fois que la valeur de notre objet "str" change on affiche sa valeur via le handler.
Et voilà :)

Commentaires

Articles les plus consultés