是否有PropertyGrid集合编辑器"添加"按钮事件或覆盖?

时间:2018-02-07 18:49:38

标签: c# winforms propertygrid collectioneditor custom-collection

当Windows窗体PropertyGrid集合编辑器"添加"是否有触发的事件或函数?单击按钮? (见图)

我想添加一些自定义代码,以便在按下此按钮时运行。

我使用自定义集合来获取对象列表(CollectionBase)。按下“添加”按钮时会调用我的构造函数,但是我在调​​用列表中看不到其他函数可以插入一些自定义代码。

enter image description here

1 个答案:

答案 0 :(得分:2)

没有记录的方法,你必须使用自己的编辑器。但是你可以从标准的编辑器类派生出来。这是一个这样的黑客的例子:

在集合属性上定义这样的自定义编辑器属性:

[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按钮,因此你可以用它做任何事情。