我有一个从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);
现在我有一个特殊的情况,我希望表单本身处理添加项的代码。
我如何更改上面的类,以便在默认情况下类本身处理操作,但在特定情况下,使用其他方法(事件/委托?)?
需要进行以下更改才能使其工作:
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...
}
}