动态PropertyGrid属性

sab*_*669 7 .net c# propertygrid

因此,对于我正在研究的这个项目,我们决定使用.NET PropertyGrid控件.根据用户在ListView控件中选择的项目,将根据运行时构建的对象填充propertygrid.

因此,如果他们选择ListView中的第一个项目(例如"Base"),PropertyGrid将显示该组件的属性,例如其尺寸.然后他们选择"Top",它将在PropertyGrid中显示颜色.无论哪种方式,列表中的每个项目都是一个"组件"对象.

基本上,当选择ListView项时,循环遍历数据集以查找与所选组件对象关联的属性,然后将其抛入propertygrid中显示的propertybag类.

我想弄清楚的是,由于这些组件和属性都是一个类,我如何动态确定哪些属性应该显示为下拉菜单,图像框或文本字段.

我正在使用Visual Studios 2010/C#.NET,而对于动态属性生成,我正在使用Tony Allowatt在CodeProject上发现的显然很受欢迎的"Property Bag"类.我唯一能想到的可能是为数据库添加一个额外的列来获取属性,并使用它来告诉PropertyBag要添加哪些数据类型?它似乎是一个热门话题,但我很难找到如何与动态构建的对象一起完成它.

Kei*_*son 7

它本身不是一个答案,但我也一直在努力建立这样一个野兽.这是stackoverflow对该主题的最大热门......

如何在运行时修改PropertyGrid(添加/删除属性和动态类型/枚举)

如何在属性网格中显示动态对象?

PropertyGrid和动态对象类型

起初我虽然实际上需要基于Expando对象的动态对象,但事实证明并非如此.您可能希望确保不要陷入该陷阱.

在我的情况下,我真正需要的是一组自定义对象,可以添加一组可变属性.其中每个属性都是三种自定义类型之一(stringType,rangeType或enumType)的实例化.一旦我意识到"动态"属性不是任意类类型,项目就变成了三个stackoverflow示例中讨论的代码的简单转折.问题如何在运行时修改PropertyGrid(添加/删除属性和动态类型/枚举)几乎是我最终结果的直接示例.

希望我的随意帮助你找到自己的道路......