Windows フォーム PropertyGrid コレクション エディターの [追加] ボタンをクリックしたときにトリガーされるイベントまたは関数はありますか? (画像参照)
このボタンが押されたときに実行するカスタム コードを追加したいと思います。
オブジェクトのリスト (CollectionBase) にカスタム コレクションを使用します。[追加] ボタンが押されるとコンストラクターが呼び出されますが、カスタム コードを挿入できる呼び出しリストに他の関数が表示されません。
Windows フォーム PropertyGrid コレクション エディターの [追加] ボタンをクリックしたときにトリガーされるイベントまたは関数はありますか? (画像参照)
このボタンが押されたときに実行するカスタム コードを追加したいと思います。
オブジェクトのリスト (CollectionBase) にカスタム コレクションを使用します。[追加] ボタンが押されるとコンストラクターが呼び出されますが、カスタム コードを挿入できる呼び出しリストに他の関数が表示されません。
文書化された方法はありません。独自のエディターを使用する必要があります。ただし、標準のエディター クラスから派生させることはできます。このようなハッキングの例を次に示します。
コレクション プロパティで、次のようにカスタム エディター属性を定義します。
[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 ボタンなので、何でもできます。