1

Windows フォーム PropertyGrid コレクション エディターの [追加] ボタンをクリックしたときにトリガーされるイベントまたは関数はありますか? (画像参照)

このボタンが押されたときに実行するカスタム コードを追加したいと思います。

オブジェクトのリスト (CollectionBase) にカスタム コレクションを使用します。[追加] ボタンが押されるとコンストラクターが呼び出されますが、カスタム コードを挿入できる呼び出しリストに他の関数が表示されません。

ここに画像の説明を入力

4

1 に答える 1

3

文書化された方法はありません。独自のエディターを使用する必要があります。ただし、標準のエディター クラスから派生させることはできます。このようなハッキングの例を次に示します。

コレクション プロパティで、次のようにカスタム エディター属性を定義します。

[Editor(typeof(MyCollectionEditor), typeof(UITypeEditor))]
public List<Child> Children { get; }

このエディタ コードを使用すると、次のようになります。

// CollectionEditor needs a reference to System.Design.dll
public class MyCollectionEditor : CollectionEditor
{
    public MyCollectionEditor(Type type)
        : base(type)
    {
    }

    protected override CollectionForm CreateCollectionForm()
    {
        CollectionForm form = base.CreateCollectionForm();
        var addButton = (ButtonBase)form.Controls.Find("addButton", true).First();
        addButton.Click += (sender, e) =>
            {
                MessageBox.Show("hello world");
            };
        return form;
    }
}

追加ボタンは単純な Winforms ボタンなので、何でもできます。

于 2018-02-08T07:00:17.847 に答える