Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 以编程方式在PropertyGrid中隐藏属性_C#_.net_Windows_Propertygrid - Fatal编程技术网

C# 以编程方式在PropertyGrid中隐藏属性

C# 以编程方式在PropertyGrid中隐藏属性,c#,.net,windows,propertygrid,C#,.net,Windows,Propertygrid,我希望根据用户在拖放中所做的选择来隐藏/显示属性。我很好地处理了事件,但实际上无法使正确的属性消失。我在网上找到的解决方案主要是从2005年开始的,由于我在这方面的经验很少,我想如果隐藏属性这么难的话,我一定是做错了什么 到目前为止,我已尝试在处理事件后访问该属性,但ReadOnly和IsBrowsable属性是只读的 propertygrid有一个属性BrowsableAttributes,它接受一个属性列表,但只起负面作用,不能执行或-仅和。提供属性集合;类别-“测试”和可浏览-为真;返回同

我希望根据用户在拖放中所做的选择来隐藏/显示属性。我很好地处理了事件,但实际上无法使正确的属性消失。我在网上找到的解决方案主要是从2005年开始的,由于我在这方面的经验很少,我想如果隐藏属性这么难的话,我一定是做错了什么

到目前为止,我已尝试在处理事件后访问该属性,但ReadOnly和IsBrowsable属性是只读的

propertygrid有一个属性BrowsableAttributes,它接受一个属性列表,但只起负面作用,不能执行或-仅和。提供属性集合;类别-“测试”和可浏览-为真;返回同时匹配两者的属性集合,由于我无法提供多个AttributeCollections,因此我无法使搜索足够具体,以隐藏必要的属性集合,同时使其他属性可见


在过去的几个小时里,我一直把头撞在墙上,想一定有更简单的方法。

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

[Browsable(false)] public object SomeProperty{ } [可浏览(错误)] 公共对象属性{ }
这样,
SomeProperty
就不会出现在propertygrid上。

要在这里执行您想要执行的操作,您需要在类上实现ICustomTypeDescriptor,propertygrid将使用ICustomTypeDescriptor来查询您的类/对象,以确定要在propertygrid中显示哪些项,以及如何编辑它们,他们应该有什么类别/描述等

它可能会变得相当混乱,但似乎在项目的代码中有一组预先编写的帮助器类

我开始编写代码项目中给出的代码的我自己的版本,遇到一个障碍后,我在谷歌上搜索了一下,找到了代码项目链接。看起来他们做得比我好多了。我已经下载了代码,它似乎工作得很好


如果它不能解决您的问题,请让我知道,我会深入挖掘。

是的,这在开始时会起作用,但我需要能够在下拉值更改时禁用/启用。@Tom:顺便问一下,您知道可以对属性应用自定义描述吗…'[Description(“SomeProperty的一些描述”)]……这类似于[question](),有些人可能希望交叉引用,但这个答案似乎更完整。