1

プロパティ グリッドで表示および編集したいコレクション プロパティを含むクラスがあります。

[EditorAttribute(typeof(System.ComponentModel.Design.CollectionEditor), typeof(System.Drawing.Design.UITypeEditor))]
public List<SomeType> Textures
{
    get
    {
        return m_collection;
    }
    set
    {
        m_collection = value;
    }
}

ただし、このコレクションを で編集しようとすると、CollectionEditor呼び出さsetれません。これはなぜですか、どうすれば修正できますか?

List<SomeType>また、ここで説明されているように、自分のコレクションに自分をラップしようとしました:

http://www.codeproject.com/KB/tabs/propertygridcollection.aspx

しかし、内のアイテムを追加および削除するときにAdd、 も も呼び出されていません。RemoveCollectionEditor

4

1 に答える 1

3

コレクションを編集しているときは、実際には元のコレクションへの参照を取得してから編集しているため、セッターは呼び出されていません。

サンプルコードを使用すると、これはゲッターを呼び出してから既存のコレクションを変更するだけです(リセットすることはありません):

var yourClass = new YourClass();
var textures = yourClass.Textures

var textures.Add(new SomeType());

セッターを呼び出すには、実際には新しいコレクションをプロパティに割り当てる必要があります。

var yourClass = new YourClass();
var newTextures = new List<SomeType>();
var newTextures.Add(new SomeType());

yourClass.Textures = newTextures;
于 2010-11-10T13:48:58.620 に答える