Bonjour,

Je suis de retour avec mes problème de propertyGrid et de propriétés.

J'ai un autre propertyGrid où je mets les propriétés de deux courbes.
Je souhaite désactivé les propriétés de la courbes n'ayant aucune donnée (donc n’étant pas affichée...)

Pièce jointe 316745

Par defaut, toutes les valeurs sont en ReadOnly = true et ne sont passé en ReadOnly = false que si il y a des données.

Je le fais via ce code ci-dessous.
Chaque méthode n'est appelé que si il y a des données dans couples xAv/yAv et xAr/yAr

Pour les propriétés "m_bShowPointcalculusAv" et "m_curve_colorAv". Ce code marche très bien. Mais pas pour "m_NomCurveAv" qui reste désactivé même en mettant l'attribut ReadOnly à false
Il faut que je passe sur une autre page de mon tabControl et en revenant la propriété est bien activée.

Avez vous une idée du probleme ?
Merci.
F.


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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
   public void CalculFitAv()
        {
            double slope = 0;
            double intercept = 0;
            double residue = 0;
 
            CurveFit.LinearFit(m_xAv.ToArray(), m_yAv.ToArray(), FitMethod.LeastSquare,out slope, out intercept, out residue);
 
            m_slopeAv = slope;
            m_interceptAv = intercept;
            m_residueAv = residue;
 
 
            PropertyDescriptor desc = TypeDescriptor.GetProperties(this.GetType())["m_bShowPointcalculusAv"];
            ReadOnlyAttribute attribute = (ReadOnlyAttribute)desc.Attributes[typeof(ReadOnlyAttribute)];
            FieldInfo field = attribute.GetType().GetField("isReadOnly", BindingFlags.NonPublic | BindingFlags.Instance);
            field.SetValue(attribute, false);
 
            desc = TypeDescriptor.GetProperties(this.GetType())["m_NomCurveAv"];
            attribute = (ReadOnlyAttribute)desc.Attributes[typeof(ReadOnlyAttribute)];
            field = attribute.GetType().GetField("isReadOnly", BindingFlags.NonPublic | BindingFlags.Instance);
            field.SetValue(attribute, false);
 
            desc = TypeDescriptor.GetProperties(this.GetType())["m_curve_colorAv"];
            attribute = (ReadOnlyAttribute)desc.Attributes[typeof(ReadOnlyAttribute)];
            field = attribute.GetType().GetField("isReadOnly", BindingFlags.NonPublic | BindingFlags.Instance);
            field.SetValue(attribute, false);
        }
 
        public void CalculFitAr()
        {
            double slope = 0;
            double intercept = 0;
            double residue = 0;
 
            CurveFit.LinearFit(m_xAr.ToArray(), m_yAr.ToArray(), FitMethod.LeastSquare, out slope, out intercept, out residue);
 
            m_slopeAr = slope;
            m_interceptAr = intercept;
            m_residueAr = residue;
 
            PropertyDescriptor desc = TypeDescriptor.GetProperties(this.GetType())["m_bShowPointcalculusAr"];
            ReadOnlyAttribute attribute = (ReadOnlyAttribute)desc.Attributes[typeof(ReadOnlyAttribute)];
            FieldInfo field = attribute.GetType().GetField("isReadOnly", BindingFlags.NonPublic | BindingFlags.Instance);
            field.SetValue(attribute, false);
 
            desc = TypeDescriptor.GetProperties(this.GetType())["m_NomCurveAr"];
            attribute = (ReadOnlyAttribute)desc.Attributes[typeof(ReadOnlyAttribute)];
            field = attribute.GetType().GetField("isReadOnly", BindingFlags.NonPublic | BindingFlags.Instance);
            field.SetValue(attribute, false);
 
            desc = TypeDescriptor.GetProperties(this.GetType())["m_curve_colorAr"];
            attribute = (ReadOnlyAttribute)desc.Attributes[typeof(ReadOnlyAttribute)];
            field = attribute.GetType().GetField("isReadOnly", BindingFlags.NonPublic | BindingFlags.Instance);
            field.SetValue(attribute, false);
        }