C# 以编程方式在PropertyGrid中隐藏属性
我希望根据用户在拖放中所做的选择来隐藏/显示属性。我很好地处理了事件,但实际上无法使正确的属性消失。我在网上找到的解决方案主要是从2005年开始的,由于我在这方面的经验很少,我想如果隐藏属性这么难的话,我一定是做错了什么 到目前为止,我已尝试在处理事件后访问该属性,但ReadOnly和IsBrowsable属性是只读的 propertygrid有一个属性BrowsableAttributes,它接受一个属性列表,但只起负面作用,不能执行或-仅和。提供属性集合;类别-“测试”和可浏览-为真;返回同时匹配两者的属性集合,由于我无法提供多个AttributeCollections,因此我无法使搜索足够具体,以隐藏必要的属性集合,同时使其他属性可见C# 以编程方式在PropertyGrid中隐藏属性,c#,.net,windows,propertygrid,C#,.net,Windows,Propertygrid,我希望根据用户在拖放中所做的选择来隐藏/显示属性。我很好地处理了事件,但实际上无法使正确的属性消失。我在网上找到的解决方案主要是从2005年开始的,由于我在这方面的经验很少,我想如果隐藏属性这么难的话,我一定是做错了什么 到目前为止,我已尝试在处理事件后访问该属性,但ReadOnly和IsBrowsable属性是只读的 propertygrid有一个属性BrowsableAttributes,它接受一个属性列表,但只起负面作用,不能执行或-仅和。提供属性集合;类别-“测试”和可浏览-为真;返回同
在过去的几个小时里,我一直把头撞在墙上,想一定有更简单的方法。您是否尝试过将此属性应用于某个属性: [Browsable(false)] public object SomeProperty{ } [可浏览(错误)] 公共对象属性{ }
这样,
SomeProperty
就不会出现在propertygrid上。要在这里执行您想要执行的操作,您需要在类上实现ICustomTypeDescriptor,propertygrid将使用ICustomTypeDescriptor来查询您的类/对象,以确定要在propertygrid中显示哪些项,以及如何编辑它们,他们应该有什么类别/描述等
它可能会变得相当混乱,但似乎在项目的代码中有一组预先编写的帮助器类
我开始编写代码项目中给出的代码的我自己的版本,遇到一个障碍后,我在谷歌上搜索了一下,找到了代码项目链接。看起来他们做得比我好多了。我已经下载了代码,它似乎工作得很好
如果它不能解决您的问题,请让我知道,我会深入挖掘。是的,这在开始时会起作用,但我需要能够在下拉值更改时禁用/启用。@Tom:顺便问一下,您知道可以对属性应用自定义描述吗…'[Description(“SomeProperty的一些描述”)]……这类似于[question](),有些人可能希望交叉引用,但这个答案似乎更完整。