C#财产摆脱关于财产的各种问题

C#财产摆脱关于财产的各种问题,c#,properties,propertygrid,C#,Properties,Propertygrid,我对propertyGrid中显示的属性有几个问题,我似乎找不到答案: 1) 如果我的属性是类,我该怎么办?当编辑多个对象时,会发生straaange(当属性为struct或simple类型时,可以,但如果属性为class,则在应用值时,它会将同一类的引用传递给所有编辑的成员,这显然很糟糕,而且它不会识别具有相同成员的两个类,因为它们具有不同的引用,等等) 2) 如何调整为属性创建的自定义下拉编辑器的大小 3) 当多个对象具有不同的值时,我能否以某种方式区分空值和无值?像这样 如果我选择了两个

我对propertyGrid中显示的属性有几个问题,我似乎找不到答案:

1) 如果我的属性是类,我该怎么办?当编辑多个对象时,会发生straaange(当属性为struct或simple类型时,可以,但如果属性为class,则在应用值时,它会将同一类的引用传递给所有编辑的成员,这显然很糟糕,而且它不会识别具有相同成员的两个类,因为它们具有不同的引用,等等)

2) 如何调整为属性创建的自定义下拉编辑器的大小

3) 当多个对象具有不同的值时,我能否以某种方式区分空值和无值?像这样

  • 如果我选择了两个具有相同“name”属性的对象,它将显示name:TEXT
  • 如果我选择了两个“名称”=”的对象,它将显示名称:
  • 如果我选择了两个具有不同“名称”的对象,它将显示名称:

4) 当值为空时,如何显示内容?当用户开始编辑时,它必须消失!例如,我有属性“name”,如果为空,它应该显示在属性网格中,但一旦用户单击进行编辑,当光标出现时,该属性应该消失

有一个很好的示例如何在MSDN中为属性网格实现自定义编辑器:

还有一篇关于如何实现自定义下拉列表的优秀文章,例如,codeproject上带有检查表控件的下拉列表:

如果你把这两篇文章结合起来,你就完成了;)


您好,

谢谢,我成功地将文章中的VB转换为C,并成功地将其运行起来,现在我有几个其他问题,我想我将更新此主题以避免产生另一个问题……太好了,我能够帮助您:)