我有一个派生自ContextMenuStrip
的课程。这个类有标准按钮,在整个项目中使用:
public class ItemMenu : ContextMenuStrip
{
public ItemMenu (IContainer container)
: base(container)
{
MenuItemAdd = new ToolStripMenuItem("Add", null, AddNew);
this.Items.AddRange(new ToolStripItem[]
{
mnuAdd,
});
}
public void AddNew(object sender, EventArgs e)
{
//Code to add new item here...
}
}
以表格形式:
cmsMenu = new ItemMenu(this.components);
现在我有一个特殊的情况,我希望表单本身处理添加项目的代码。
如何更改上面的类,以便在默认情况下类本身处理操作,但在特定情况下,使用其他方法(事件/委托?)?
答案 0 :(得分:0)
要使其发挥作用,需要进行以下更改:
public class ItemMenu : ContextMenuStrip
{
public event EventHandler AddNewItem;
public ItemMenu (IContainer container)
: base(container)
{
MenuItemAdd = new ToolStripMenuItem("Add", null, AddNew);
this.Items.AddRange(new ToolStripItem[]
{
mnuAdd,
});
}
public void AddNew(object sender, EventArgs e)
{
EventHandler handler = AddNewItem;
if (handler != null)
{
handler(sender, e);
}
else
{
OnAddNew(sender, e);
}
}
protected void OnAddNew(object sender, EventArgs e)
{
//Code to add new item here...
}
}