我通常使用此方法在 PropertyGrid 中动态显示/隐藏属性(使用Reflection
):
public void ShowValue(string _Who, bool _Enabled)
{
BrowsableAttribute attribute = (BrowsableAttribute)TypeDescriptor.GetProperties(this.GetType())(_Who).Attributes(typeof(BrowsableAttribute));
System.Reflection.FieldInfo fieldToChange = attribute.GetType().GetField("Browsable", Reflection.BindingFlags.NonPublic | Reflection.BindingFlags.Instance | Reflection.BindingFlags.Public | Reflection.BindingFlags.Static | Reflection.BindingFlags.IgnoreCase);
fieldToChange.SetValue(attribute, _Enabled);
//Refresh the Property Grid
PG.Refresh();
}
参数是:
- _Who : 要动态更改的属性名称
- _Enabled : true 显示或 false 隐藏 PropertyGrid 中的属性
我使用的 PropertyGrid 的名称是PG
. 更改后我需要刷新它。
此方法应属于SelectedObject
PropertyGrid 中使用的类。