Я использую PropertyGrid в своем приложении. Мне нужно было изменить видимость и readonly для некоторых свойств во время выполнения на пользовательских данных критериев.Ищет событие, которое срабатывает при вызове свойства
Хотя я не нашел что-то легко & готов к этому, я нашел обходной путь, изменив ReadOnlyAttribute
и BrowsableAttribute
свойства во время выполнения, как:
protected void SetBrowsable(string propertyName, bool value)
{
PropertyDescriptor property = TypeDescriptor.GetProperties(GetType())[propertyName];
BrowsableAttribute att = (BrowsableAttribute)property.Attributes[typeof(BrowsableAttribute)];
FieldInfo cat = att.GetType().GetField("browsable", BindingFlags.NonPublic | BindingFlags.Instance);
if (property.Attributes.Cast<Attribute>().Any(p => p.GetType() == typeof(BrowsableAttribute)))
cat.SetValue(att, value);
}
protected void SetReadOnly(string propertyName, bool value)
{
PropertyDescriptor property = TypeDescriptor.GetProperties(GetType())[propertyName];
ReadOnlyAttribute att = (ReadOnlyAttribute)property.Attributes[typeof(ReadOnlyAttribute)];
FieldInfo cat = att.GetType().GetField("isReadOnly", BindingFlags.NonPublic | BindingFlags.Instance);
if (property.Attributes.Cast<Attribute>().Any(p => p.GetType() == typeof(ReadOnlyAttribute)))
cat.SetValue(att, value);
}
Теперь моя проблема в том, что там, где я должен вызывать эти методы? есть ли какое-либо событие, которое я могу обработать для object
, чтобы вызвать эти методы? Возможно, реализовав интерфейс.