1

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

4

1 に答える 1

-1

その問題についてさらに調査した後、別のstackoverflowの記事のおかげで解決策を見つけました:

PropertyGridマルチ。コントロール選択、プロパティセットのnull例外?

すべてのプロパティがすべてのインスタンスに共通である複数のオブジェクトが選択された場合、作成者は拡張可能なプロパティに関して同じ問題を抱えていました。「typeconverter」(または親)行は空のままですが、サブプロパティが表示されます。

彼は、インスタンスがプロパティグリッドに表示されているクラスのメソッドEqualsをオーバーライドすることに気づきました。はい、それだけです。

greggorob64に感謝します!

よろしくお願いします

于 2012-05-12T12:38:32.233 に答える