【发布时间】:2012-05-10 22:52:12
【问题描述】:
propertygrid 不显示多个对象的可扩展属性的父值时遇到问题(使用 propertygrid.SelectedObjects)
[Browsable(true), TypeConverter(typeof(ExpandableObjectConverter))]
public class MyNestedClass {
private int a;
private int b;
[Browsable(true),
ReadOnly(false),
RefreshProperties(RefreshProperties.Repaint),
NotifyParentProperty(true)]
public int A {
get { return this.a; }
set { this.a = value; }
}
[Browsable(true),
ReadOnly(false),
RefreshProperties(RefreshProperties.Repaint),
NotifyParentProperty(true)]
public int B {
get { return this.b; }
set { this.b = value; }
}
public MyNestedClass(int a, int b) {
this.a = a;
this.b = b;
}
public override string ToString() {
return this.a.ToString() + “; “ + this.b.ToString();
}
}
这个类是另一个类 myClass 的一部分,其中 myNestedClass 被定义为其中的可浏览属性。
public class MyClass {
…
private MyNestedClass myNestedClassObject;
…
[Browsable(true),
ReadOnly(false),
MergableProperty(true),
RefreshProperties(RefreshProperties.Repaint)]
public MyNestedClass MyNestedClassObject {
get { return myNestedClassObject; }
set { myNestedClassObject = value; }
}
…
}
当属性网格中只显示一个类 myClass 的实例时,一切正常。 属性网格显示:
…
MyNestedClassObject | 1; 2
A | 1
B | 2
…
如果我试图显示 MyClass 实例数组(通过 propertygrid.SelectedObjects),其中 myNestedClass 对象确实具有相同的 a 和 b 值,我只在 propertygrid 中看到类似的内容:
…
MyNestedClassObject |
A | 1
B | 2
…
我知道 propertygrid 旨在仅显示多个对象的公共属性,子属性 a 和 b 也是如此。但是为什么可扩展属性的所谓“类型转换器”(或父)行确实有一个空值部分,尽管子属性 a 和 b 对于所有对象都是相同的?
任何人都可以对此有所了解和/或可以帮助我解决这个问题吗?
在此先感谢
乔辰
【问题讨论】:
标签: c# winforms propertygrid