以编程方式隐藏 PropertyGrid 中的字段

7

本文介绍了以编程方式隐藏 PropertyGrid 中的字段的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

使用

<System.ComponentModel.TypeConverter(GetType(System.ComponentModel.ExpandableObjectConverter))> _

关于一个类的声明(它是另一个类的属性),它由一个数字属性组成.

on the declaration of a class (which is a property of another class) that consists of a number properties.

我只用 ... 加载这个类的一个实例

I load an instance of this class with simply ...

PropertyGrid1.SelectedObject = oColumn

显然我不想在代码中手动构建 propertygrid,我知道该怎么做.

Obviously I don't want to manually build the propertygrid in code, I know how to do that.

但这就是问题所在.根据属性的值,某些其他属性不应该是可见的,就好像我使用了

But here's the problem. Depending on the value of a property, certain other properties should not be visible, as though I'd used the

<System.ComponentModel.Browsable(False)> _

属性声明.

有没有办法以编程方式执行此操作,而无需手动处理属性网格的所有构建>

Is there anyway to do this programmatically, without having to handle all the building of the property grid manually>

推荐答案

如果您希望使用 gridItem.Hide(),那么答案是否定的.在 MS PropertyGrid 中实现这一点的唯一方法是通过 TypeConverter 或自定义类型描述符(实现 ICustomTypeDescriptor)的 GetProperties 方法动态发布您的属性.我会先尝试使用 TypeConverter(特别是如果您要检查的属性值处于同一级别),需要做的编码更少.

if you were hoping for a gridItem.Hide() then, the answer is no. The only way to achieve that in the MS PropertyGrid is to dynamically publish your properties through the GetProperties method of a TypeConverter or custom type descriptor (that implements ICustomTypeDescriptor). I would try first with the TypeConverter (expecially if the property values you want to check are at the same level), there is less coding to do.

这篇关于以编程方式隐藏 PropertyGrid 中的字段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

The End

相关推荐

C# 中的多播委托奇怪行为?
Multicast delegate weird behavior in C#?(C# 中的多播委托奇怪行为?)...
2023-11-11 C#/.NET开发问题
6

如何将代表存储在列表中
How to store delegates in a List(如何将代表存储在列表中)...
2023-11-11 C#/.NET开发问题
6

Delegate.CreateDelegate() 和泛型:错误绑定到目标方法
Delegate.CreateDelegate() and generics: Error binding to target method(Delegate.CreateDelegate() 和泛型:错误绑定到目标方法)...
2023-11-11 C#/.NET开发问题
14

具有未知类型的 CreateDelegate
CreateDelegate with unknown types(具有未知类型的 CreateDelegate)...
2023-11-11 C#/.NET开发问题
5

Func&lt;T&gt;.BeginInvoke 使用线程池吗?
Does Funclt;Tgt;.BeginInvoke use the ThreadPool?(Funclt;Tgt;.BeginInvoke 使用线程池吗?)...
2023-11-11 C#/.NET开发问题
6

如何为具有空目标的实例方法创建委托?
How to create a delegate to an instance method with a null target?(如何为具有空目标的实例方法创建委托?)...
2023-11-11 C#/.NET开发问题
6