내 응용 프로그램에서 PropertyGrid를 사용하고 있습니다. 런타임시 사용자 정의 데이터 기준에서 일부 속성에 대한 가시성 및 읽기 전용을 변경해야했습니다. 내가 뭔가 쉽게 & 준비 발견하지 않았지만속성 가져 오기가 호출 될 때 발생하는 이벤트 찾기
, 나는 다음과 같은 런타임에 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
을 처리 할 수있는 이벤트가 있습니까? 어쩌면 인터페이스를 구현할 수도 있습니다.