Есть ли в редакторе коллекции PropertyGrid событие "Добавить" или событие переопределения?

Есть ли событие или функция, которая запускается при нажатии кнопки "Добавить" в редакторе коллекции Windows Forms PropertyGrid? (см. изображение)

Я хотел бы добавить собственный код для запуска при нажатии этой кнопки.

Я использую пользовательскую коллекцию для списка объектов (CollectionBase). Мой конструктор вызывается при нажатии кнопки "Добавить", но я не вижу других функций в списке вызовов, в которые я мог бы вставить собственный код.

1 ответ

Решение

Нет документированного способа, вам придется использовать свой собственный редактор. Но вы можете извлечь из стандартного класса редактора. Вот пример такого взлома:

Определите пользовательский атрибут редактора следующим образом в свойстве collection:

[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, так что вы можете делать с ней все что угодно.

Другие вопросы по тегам