是否有 PropertyGrid Collection Editor "Add" 按钮事件或覆盖?
Is there a PropertyGrid Collection Editor "Add" button event or override?
单击 Windows Forms PropertyGrid 集合编辑器 "Add" 按钮时是否会触发事件或函数? (见图)
我想在按下此按钮时向 运行 添加一些自定义代码。
我为对象列表 (CollectionBase) 使用自定义集合。按下“添加”按钮时会调用我的构造函数,但我在调用列表中看不到可以插入一些自定义代码的其他函数。
没有记录在案的方法,您必须使用自己的编辑器。但是您可以从标准编辑器 class 派生。这是此类黑客攻击的示例:
像这样在集合上定义自定义编辑器属性属性:
[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 按钮,因此您可以用它做任何事情。
单击 Windows Forms PropertyGrid 集合编辑器 "Add" 按钮时是否会触发事件或函数? (见图)
我想在按下此按钮时向 运行 添加一些自定义代码。
我为对象列表 (CollectionBase) 使用自定义集合。按下“添加”按钮时会调用我的构造函数,但我在调用列表中看不到可以插入一些自定义代码的其他函数。
没有记录在案的方法,您必须使用自己的编辑器。但是您可以从标准编辑器 class 派生。这是此类黑客攻击的示例:
像这样在集合上定义自定义编辑器属性属性:
[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 按钮,因此您可以用它做任何事情。