2016-04-15 102 views
0

我有一个派生自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

以下变化需要得到它的工作:

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... 
    } 
} 
相关问题