当Windows窗体PropertyGrid集合编辑器"添加"是否有触发的事件或函数?单击按钮? (见图)
我想添加一些自定义代码,以便在按下此按钮时运行。
我使用自定义集合来获取对象列表(CollectionBase)。按下“添加”按钮时会调用我的构造函数,但是我在调用列表中看不到其他函数可以插入一些自定义代码。
答案 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按钮,因此你可以用它做任何事情。