Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.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#_Winforms_F# - Fatal编程技术网

C# 是否可以在PropertyGrid中查看公共属性以外的成员?

C# 是否可以在PropertyGrid中查看公共属性以外的成员?,c#,winforms,f#,C#,Winforms,F#,是否可以在PropertyGrid中查看公共属性以外的成员?“默认情况下,所选对象的所有公共属性将显示在PropertyGrid中”。“默认情况下”似乎意味着在进行一些配置后,可以查看字段或非公共属性等 请注意,我实际上不想显示除公共属性以外的任何内容,我只需要知道它支持什么。因此基本上您希望控制属性网格中显示的内容。是的,这是可能的 对象可以通过实现接口ICustomTypeDescriptor来提供有关其自身的自定义信息。如果未实现此功能,则属性网格将使用静态TypeDescriptor 所

是否可以在PropertyGrid中查看公共属性以外的成员?“默认情况下,所选对象的所有公共属性将显示在PropertyGrid中”。“默认情况下”似乎意味着在进行一些配置后,可以查看字段或非公共属性等


请注意,我实际上不想显示除公共属性以外的任何内容,我只需要知道它支持什么。

因此基本上您希望控制属性网格中显示的内容。是的,这是可能的

对象可以通过实现接口
ICustomTypeDescriptor
来提供有关其自身的自定义信息。如果未实现此功能,则属性网格将使用静态
TypeDescriptor

所以我们需要实施

属性信息将由接口方法返回。此方法返回PropertyDescriptorCollection类型的对象

编辑:您应该查看PropertyGrid.BrowsableAttributes以获得更简单的解决方案

一些有用的链接-


PropertyGrid是一个非常复杂的控件。也许你应该问问你想用它实现什么-1不是从我这里:)我无法想象除了公众成员之外它会看到什么。我认为“默认情况下”并不是指语句中的“公共”部分,而是指“所有内容都将显示”部分。@David-它可以通过反射看到非公共成员,与公共成员相同。@AseemGautam-我正在为我的开源项目FsEye()创建一个插件体系结构。IPlugin接口有一个
IsWatchable:Type->bool
成员,插件作者可以使用该成员指示给定类型的实例是否可监视。我正在开发的一个内置插件基于PropertyGrid。因此,我希望
IsWatchable
在给定类型的实例没有任何有用的内容可以显示在PropertyGrid中时返回false。@StephenSwensen:我认为它不会以本机方式这样做。至少我希望不会。非公开成员是非公开的,理由很充分。在多态世界中,出于所有目的和目的,对象外部不存在非公共成员。请检查“编辑”以获得替代解决方案。更好更简单。谢谢,这回答了我的问题!基本上,
Type.GetProperties().Length>0
对于我的
IsWatchable
实现是不够的!