嘿我使用Propertygrid来设置表的值。某些属性将被重置,并且只有在其他属性设置为某个特定值时才设置为只读。
这发生在这样的属性的setter中:
[CustomSortedCategory("Modes", 2, 4), DescriptionAttribute("..."), ReadOnly(false), DisplayName("Mode")]
[System.ComponentModel.RefreshProperties(RefreshProperties.All)]
public GraphLineFunctions Function
{
get
{
return function;
}
set
{
function = value;
if (function == GraphLineFunctions.TimeDelta || function == GraphLineFunctions.TimeDeltaAll) {
BasetimeFilter = "";
PropertyDescriptor descriptor = TypeDescriptor.GetProperties(this.GetType())["BasetimeFilter"];
ReadOnlyAttribute attrib = (ReadOnlyAttribute)descriptor.Attributes[typeof(ReadOnlyAttribute)];
FieldInfo isReadOnly = attrib.GetType().GetField("isReadOnly", BindingFlags.NonPublic | BindingFlags.Instance);
isReadOnly.SetValue(attrib, true);
}
}
}
如果此类别中的所有属性都设置为只读,我希望类别也显示为灰色。有人知道一个简单的方法吗?
谢谢