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のインスタンスが1つだけ表示されている場合は、すべてが正常に機能しています。propertygridは次のことを示しています。
…
MyNestedClassObject | 1; 2
A | 1
B | 2
…
MyClassインスタンスの配列を(propertygrid.SelectedObjectsを介して)表示しようとしている場合、myNestedClassオブジェクトのaとbの値は同じですが、propertygridには次のようなものしか表示されません。
…
MyNestedClassObject |
A | 1
B | 2
…
propertygridは、複数のオブジェクトの共通のプロパティのみを表示するように設計されていることを知っています。これは、サブプロパティaとbに当てはまります。しかし、サブプロパティaとbはすべてのオブジェクトで同じであるにもかかわらず、拡張可能なプロパティのいわゆる「typeconverter」(または親)行に空の値の部分があるのはなぜですか?
誰かがそれについて少し光を当てることができますか、および/またはこの問題について私を助けることができますか?
よろしくお願いします
Jochen