Modification attribute ReadOnly d'une propriété
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:
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);
} |