【发布时间】:2020-06-14 22:51:12
【问题描述】:
我正在 Winforms 中制作一个应用程序,用户从列表中选择一个对象(所有这些都是不同的类),然后编辑它的属性。一些对象的属性显示为灰色,因为它们没有设置器。有没有办法自动从网格中删除这些属性,或者获取所有类似条目的列表并以编程方式删除它们。
谢谢。
【问题讨论】:
-
通常使用自定义设计器完成,覆盖
PostFilterProperties(和PreFilterProperties,如有必要)。您将控件的属性作为字典接收。然后,您可以决定是否要从集合中删除该属性,或者只是使用 TypeDescriptor 将某些属性的BrowsableAttribute设置为false(例如,properties["Some Property"] = TypeDescriptor.CreateProperty(this.Component.GetType(), (PropertyDescriptor)properties["Some Property"], new BrowsableAttribute(false));) -
感谢您的回复。我应该为自定义设计器继承什么类?
-
从
ControlDesigner(直接或间接)派生的类。所以ControlDesigner本身(或您从它派生的任何其他现有自定义类),或ParentControlDesigner。
标签: c# winforms propertygrid