Bonjour,

afin de séparer mon interface graphique de mon modèle, j'ai implémenté dans une classe de mon modèle un évenement de changement de valeur.

Solution1:
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
36
37
38
39
 
public class Data {
 
   private double[] m_Data;     // ensemble de données lue
   private double m_LastData; // mémorise la dernière valeur lue
   public double LastData{
       get { return m_LastData;}
       private set {
             if (m_LastData != value) {
                       m_LastData = value;
                       LastValueChanged(this,new EventArgs());
             }
   }
 
   private AcquireData m_Acquire;
 
   public Data() {
        m_Data = new double[1000];
        m_Acquire = new AcquireData();
        m_Acquire.ReadValue += ChangeData;
   }
 
   // Fonction appelé lorsque l'évenement de mise à jour des données
   // est envoyé par l'objet m_Acquire
   public void ChangeData(object sender, eventargs ev) {
 
           Array.Copy(m_Acquire.DataRead, m_Data, value.Length);
 
           // Mise à jour de la dernière valeur
           // L'évenement est automatiquement déclenché
           LastData = m_Data[m_Data.Length-1];                      
   }
 
   pubilc event LastValueChangedEventHandler LastValueChanged;
 
   public delegate void LastValueChangedEventHandler(object sender,
 EventArgs e);
 
}
Lorsque la valeur change, l'évenement est appelé dans la propriété LastData.
La propriété LastData est spécialement crée pour cet évenement.

Solution 2:
Ou alors je crée une classe LastDataChangedEventArgs:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
public class LastDataChangedEventArgs {
   private double m_Value;
   public double Value {
      get { return m_Value;}
   }
 
   public LastDataChangedEventArgs (double lastValue) {
       m_Value = lastValue;
   }
}
ce qui donnerait dans la méthode ChangeData:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
   // Fonction appelé lorsque l'évenement de mise à jour des données
   // est envoyé par l'objet m_Acquire
   public void ChangeData(object sender, eventargs ev) {
 
           Array.Copy(m_Acquire.DataRead, m_Data, value.Length);
 
           // Mise à jour de la dernière valeur
           // L'évenement est automatiquement déclenché
           LastValueChanged(this,new LastDataChangedEventArgs(m_Data
[m_Data.Length-1]));           
   }
Selon vous qu'est-ce qui est plus propre ?
La solution 1 ou la solution 2 ?
En fait, je me demande si je dois créee un évenement dans lequel je mets en argument la valeur ou si je crée une propriété LastValue qui déclenche l'évenement quand la valeur est réllement modifiée.

Merci pour vos conseils.