在C#中如何使工具栏按钮Click事件和菜单的Click事件共享同一段代码

解决方案 »

  1.   

    你可以把代码放到一个方法中,两个事件都调用这个方法就可以了
    void method1()
    {
     //你的代码
    }
     onclick1(send e EventAge s)
    {
    method1()
    }
    onclick2(send e EventAge s)
    {
    method1()}
      

  2.   

    用事件委托把2个事件连到同一个方法上。如果参数类型不同(主要是第2个参数e 有可能不同,第一个sender一般都是object)用父类。(都是父子类关系的)
      

  3.   

    工具栏按钮.Click+=new EventHandler(AAA);
    菜单.Click+=new EventHandler(AAA);
    private void AAA(object sender, EventArgs e)
    {
    //..........
    }
      

  4.   

    菜单(供应商)事件:private void menuItem2_Click(object sender, System.EventArgs e)
    {                          代码
                       }工具栏事件:private void toolBar1_ButtonClick(object sender,System.Windows.Forms.ToolBarButtonClickEventArgs e)
    {
    switch(e.Button.Text)
    {
    case "供應商":
    menuItem2_Click(sender,e);
    break;
                                }
                        }
      

  5.   

    这个问题要是在Delphi里面就直接拖一个ActionList就可以了;
    呵呵,楼上的兄弟正解.
      

  6.   

    例如:
    private void toolBarNavigation_ButtonClick(object sender, System.Windows.Forms.ToolBarButtonClickEventArgs e)
    {
    int tag=int.Parse(e.Button.Tag.ToString());
    switch(tag) 
    {
    case 0:
    menuItemGHGH_Click(this.menuItemGHGH,null);
    break;
    case 1:
    menuItemGHTH_Click(this.menuItemGHTH,null);
    break;
    case 2:
    menuItemGHBR_Click(this.menuItemGHBR,null);
    break;
    case 3:
    menuItemJZKDJ_Click(this.menuItemJZKDJ,null);
    break;
    case 4:
    menuItemJZKGL_Click(this.menuItemJZKGL,null);
    break;
    case 5:
    menuItemYJJZR_Click(this.menuItemYJJZR,null);
    break;
    case 6:
    menuItemYJJTH_Click(this.menuItemYJJTH,null);
    break;
    case 7:
    menuItemChangePassWord_Click(this.menuItemChangePassword,null);
    break;
    case 8:
    menuItemRelogin_Click(this.menuItemReLogin,null);
    break;
    case 9:
    menuItemExit_Click(this.menuItemExit,null);
    break;
    default:
    break; }
    }