IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

[3.5] Implémenter un écouteur d'évenements


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de thelpi
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    217
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 217
    Par défaut [3.5] Implémenter un écouteur d'évenements
    salut tout le monde,

    j'ai une classe B qui hérite d'une classe A et qui contient également une collection d'objet de type A. Quand un objet de cette collection voit la valeur de ses attributs changer, l'instance de B doit en être informé. Pour le moment je fait ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    class A
    {
            protected int nbSync = 0;
     
            public A(int sync)
            {
                    nbSync = sync;
            }
     
            public Nbsync
            {
                    get { return nbSync; }
                    protected set { nbSync = value; }
            }
     
            class B : A
            {
                    private List<A> listA;
     
                    public B()
                    {
                            listA = new List<A>;
                            nbSync = 0;
                    }
     
                    public Update()
                    {
                            foreach(A objetA in ListA)
                            {
                                    nbSync += objetA.nbSync;
                            }
                    }
            }
    }
    j'ai mis qu'une petite partie des 2 classes, mais le nécéssaire est la: mon but est de remplacer la fonction Update par un écouteur d'évenement quand un objet A de la liste a son attribut nbSync modifié.

    j'ai lu l'article msdn sur INotifyPropertyChanged mais je ne sais pas comment l'implémenter...

    merci à vous!

  2. #2
    Membre confirmé Avatar de thelpi
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    217
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 217
    Par défaut
    Finalement j'ai trouvé tout seul comme un grand! je poste la réponse si ça peut intéresser ou si quelqu'un à une amélioration à proposer:

    création d'une classe d'évenement personnalisé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public class MyEventArgs : EventArgs
    {
         public MyEventArgs() {}
    }
    dans la classe mère:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    public event MyEventHandler onChanged;
    public delegate void MyEventHandler(object sender, MyEventArgs e);
    et au niveau de l'accesseur set de la propriété (tjr dans la classe mère:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public int NbSync {
    set { 
         nbSync = value;
         onChanged(this, new MyEventArgs());
    }
    }
    dans la classe fille:
    dans le constructeur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    foreach(A objetA in ListA)
         objetA.onChanged += new MyEventHandler(Change);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    private void Change(object sender, MyEventArgs e)
    {
         int i = 0;
         foreach(A objetA in ListA)
              i += objetA.nbSync;
         NbSync = i;
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 04/06/2004, 09h13
  2. Réponses: 4
    Dernier message: 21/05/2004, 11h24
  3. Moteur physique : comment l'implémenter ?
    Par haypo dans le forum Algorithmes et structures de données
    Réponses: 15
    Dernier message: 17/12/2003, 12h56
  4. Réponses: 2
    Dernier message: 06/07/2002, 12h36
  5. Implémentation des fonctions mathématiques
    Par mat.M dans le forum Mathématiques
    Réponses: 9
    Dernier message: 17/06/2002, 16h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo