1

单击 Windows 窗体 PropertyGrid 集合编辑器“添加”按钮时是否触发了事件或函数?(见图)

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

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

在此处输入图像描述

4

1 回答 1

3

没有记录的方法,您必须使用自己的编辑器。但是您可以从标准编辑器类派生。以下是此类 hack 的示例:

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

[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 回答