以编程方式隐藏PropertyGrid中的属性

我正在寻找隐藏/显示属性,取决于用户在下拉select什么。 我正在处理事件的罚款,但实际上不能使正确的属性消失。 我在网上find的解决scheme主要是从2005年开始的,因为我对它的经验很less,所以我认为如果隐藏属性是非常困难的,我一定会做错事情。

到目前为止,我已经尝试访问属性,一旦事件被处理,但ReadOnly和IsBrowsable属性是只读的。

propertygrid有一个属性BrowsableAttributes,它需要一个属性列表,但是只能起负面作用,不能做或者只做和。 提供属性集合; 类别 – “testing”和isbrowsable – 真; 返回那些匹配两者,因为我不能提供多个AttributeCollections我不能使search的具体情况足以隐藏必要的,同时使其他人可见。

过去几个小时,我一直把头撞在墙上,认为必须有一个更简单的方法。

您是否尝试将此属性应用于属性:

 [可浏览(假)]
公共对象SomeProperty {
 }

这样SomeProperty不会出现在propertygrid上。

为了在这里做你想做的事情,你需要在你的类上实现ICustomTypeDescriptor,这是PropertyGrid将用来查询你的类/对象,以找出在PropertyGrid中显示什么项目,如何编辑它们,什么他们应该有的类别/描述等等。

它可能会变得相当混乱,但似乎在http://www.codeproject.com/KB/grid/PropertyGridDynamicProp.aspx上的代码项目上有一个预先编写的助手类集。

我开始编写自己的代码项目代码的版本,碰到一个障碍,我做了一些Google搜索,并提出了代码项目链接。 看起来他们比我做得好多了。 我已经下载了代码,它似乎工作得很好。

如果它不能解决你的问题,请让我知道,我会深入一点。