关于动态注册事件,请指教!首先有一个窗体frmMain,
然后窗体里面有一个GroupBox1,
然后这个GroupBox1里面有3个按钮Button1,Button2,Button3,
每个Button都有自己的Click方法:Button1_Click(),Button2_Click(),Button2_Click(),每个方法的名称都不一样,现在,我在窗体上添加了一个menu,在窗体初始化的时候,动态的将三个按钮的Text添加到Menu的DropDownItems里面去,并注册每个菜单项的Click事件等于每个按钮的Click事件,关于注册的方法,现在不知道该怎么做,麻烦各位指教!谢谢!
     
   private void frmMain_Load(object sender, EventArgs e)
        {
            foreach (Control c in this.GroupBox1.Controls)
            {//建立一个循环,自动把按钮的文本加到菜单里面,便注册每个菜单项的Click事件等于相应Button的Click事件                this.ToolStripMenuItem1.DropDownItems.Add(c.Text);//将按钮文本添加到菜单,这里没问题
              
                 //接下来将事件添加到菜单项目              this.ToolStripMenuItem1.DropDownItems[this.ToolStripMenuItem1.DropDownItems.Count - 1].Click += ??????? //这里不知道该怎么写,请指教!
            }        }
当然,如果将三个按钮的Click的方法名称统一的话可以做到,这个例子虽然没有什么意义,但我想知道实现的方法。

解决方案 »

  1.   

    注册事件要用委托,要注册Button的Click事件,可以这样:Button_ID.Click += new EventHandler(Button_Click);  //Button_Click为下面的方法引用//按钮事件处理函数
    private void Button_Click(object sender, EventArgs e)
    {
       //...
    }
      

  2.   

    this.ToolStripMenuItem1.DropDownItems[this.ToolStripMenuItem1.DropDownItems.Count - 1]
    ====>
    具体指的是什么(我没用过这个控件)??在CSDN中查查,然后看看这个控件有没有事件,如果有的话,则添加事件处理函数