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:
Lorsque la valeur change, l'évenement est appelé dans la propriété LastData.
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); }
La propriété LastData est spécialement crée pour cet évenement.
Solution 2:
Ou alors je crée une classe LastDataChangedEventArgs:
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 public class LastDataChangedEventArgs { private double m_Value; public double Value { get { return m_Value;} } public LastDataChangedEventArgs (double lastValue) { m_Value = lastValue; } }
Selon vous qu'est-ce qui est plus propre ?
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])); }
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.
Partager