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