如何更改菜单按钮的事件处理程序



我有一个从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...
    }
}

相关内容

  • 没有找到相关文章

最新更新