如何把menu的click用代碼指給某button的click事件。

解决方案 »

  1.   

    private void menu1_Click(object sender, EventArgs e)
    {
       button1_Click(sender, e);
    }private void button1_Click(object sender, EventArgs e)
    {
       MessageBox.Show("I'm Button1 Click...");
    }
      

  2.   

    直接在属性编辑器上为按钮的Click事件选择菜单项的Click事件即可。也可以使用代码:
    例如:下面是菜单的Click事件:
    this.menuItemToolStripMenuItem.Click += new System.EventHandler(this.menuItemToolStripMenuItem_Click);
    那么把按钮的Click事件绑定到其上:
    this.button1.Click += new System.EventHandler(this.menuItemToolStripMenuItem_Click);
    private void menuItemToolStripMenuItem_Click(object sender, EventArgs e)
    {
        //do something
    }
      

  3.   

    1樓的好像也不行,我的button是用代碼創建的。
      

  4.   

    現我我說明白點,開始可能沒說清楚需求。
    我的button是根據menu下的子菜單動態產生的,這個沒有問題了,
    但是我要把子菜單裡的click事件也要給對應的button.
    現在這個不知如何弄。
      

  5.   


    我的代碼如下
    private void createButton(ToolStripMenuItem MainItem)
            {
                int k = 0;
                panel2.Controls.Clear();
                ToolStripMenuItem item = new ToolStripMenuItem();
                for (int i = 0; i < MainItem.DropDownItems.Count; i++)
                {
                    if (MainItem.DropDownItems[i].GetType().ToString() != "System.Windows.Forms.ToolStripMenuItem") continue;
                    item = (ToolStripMenuItem)menuJXCGL.DropDownItems[i];
                    if (item.DropDownItems.Count > 0)
                    {
                        for (int j = 0; j < item.DropDownItems.Count; j++)
                        {
                            Button button = new Button();
                            button.Name = "Button" + i.ToString();
                            button.Text = item.DropDownItems[j].Text;
                            button.Height = 25;
                            button.Width = 120;
                            this.panel2.Controls.Add(button);
                            button.Left = 3;
                            button.Top = 25 * k;
                            
                            //button.Click += item.Click();//這裡不知如何弄
                            b[i] = button;
                            k++;
                        }
                    }
                    else
                    {
                        Button button = new Button();
                        button.Name = "Button" + i.ToString();
                        button.Height = 25;
                        button.Width = 120;
                        this.panel2.Controls.Add(button);
                        button.Left = 3;
                        button.Top = 25 * k;
                        b[i] = button;
                         //button.Click += item.Click();這裡不知如何弄                    b[i].Text = item.Text;
                        k++;
                    }
                }
      

  6.   

    to 樓上,
    我就是不知要調用哪個方法,我是循環的。我循環到哪就是哪個。
    難道沒有辦法了嗎,delphi反正是可以實現。onclikc附給onclick就可以了。
    c#好像不能這樣搞。
      

  7.   

    还是不太明白你的意思。你这里说子菜单的功能是生成BUTTON,BUTTON的功能是什么呢?
    子菜单的功能是什么,BUTTON的功能是什么?
    楼主再说清楚些。
      

  8.   

    发表于:2007-11-26 16:34:159楼 得分:0 
    現我我說明白點,開始可能沒說清楚需求。 
    我的button是根據menu下的子菜單動態產生的,這個沒有問題了, 
    但是我要把子菜單裡的click事件也要給對應的button. 
    現在這個不知如何弄。 
    ----------------------------------------------------
    按楼主的说法,子菜单menu1的功能是生成一个button1;
    menu1的click事件也要给对应的button1,那就是说button1的功能是生成另外一个button2还是生成它自己?
    不太明白。
      

  9.   

    to red_fish
    不是你說的這個意思
    我加載窗體時,我要根據我的菜單項動態生成一些按鈕,我的按鈕的點擊功能就是菜單的點擊功能。
    這樣讓用戶愛點菜單就點菜單愛點按鈕就點按鈕,
    不知大家明白我的需求了沒有。
      

  10.   

    想简单点,就用TOOLbar控件吧,简单,不过不推荐用动态创建的1楼的应该搞定的
    this.button1.Click   +=    (按TAB时间就出来了)
      

  11.   


    to fantasyzc
    如果要用下面的這個
    this.button1.Click   +=   new   System.EventHandler(this.menuItemToolStripMenuItem_Click); 
    this.menuItemToolStripMenuItem_Click你事先是知道這個事件。
    我用循環的方法我就不知道要調用哪個事件,我隻知道是哪一個菜單了。所以是不行的。我的需求是:
    我加載窗體時,我要根據我的菜單項動態生成一些按鈕,我的按鈕的點擊功能就是菜單的點擊功能。 
    這樣讓用戶愛點菜單就點菜單愛點按鈕就點按鈕,
      

  12.   

    to wanabethis.button1.Click       +=         (按TAB时间就出来了)
    不懂你的意思,能說明白點嗎?
      

  13.   

    謝謝各位的參與。我自己實現了。代碼如下(要用委托的方法)private void createButton(ToolStripMenuItem MainItem)
            {
                int k = 0;
                panel2.Controls.Clear();
               
                for (int i = 0; i < MainItem.DropDownItems.Count; i++)
                {
                    ToolStripMenuItem item = new ToolStripMenuItem();
                    if (MainItem.DropDownItems[i].GetType().ToString() != "System.Windows.Forms.ToolStripMenuItem") continue;
                    item = (ToolStripMenuItem)MainItem.DropDownItems[i];
                    if (item.DropDownItems.Count > 0)
                    {
                        for (int j = 0; j < item.DropDownItems.Count; j++)
                        {
                            ToolStripMenuItem subItem = new ToolStripMenuItem();
                            if (item.DropDownItems[j].GetType().ToString() != "System.Windows.Forms.ToolStripMenuItem") continue;
                            subItem = (ToolStripMenuItem)item.DropDownItems[j];
                            Button button = new Button();
                            button.Click += delegate
                            {
                                subItem.PerformClick();
                            };
                            button.Name = "Button" + i.ToString();
                            button.Text = subItem.Text;
                            button.Height = 25;
                            button.Width = 120;
                            this.panel2.Controls.Add(button);
                            button.Left = 3;
                            button.Top = 25 * k;
                            button.TextAlign = ContentAlignment.MiddleLeft;
                            b[i] = button;
                            k++;
                        }
                    }
                    else
                    {
                        Button button = new Button();
                        button.Click += delegate
                        {
                            item.PerformClick();
                        };
                        button.Name = "Button" + i.ToString();
                        button.Height = 25;
                        button.Width = 120;
                        this.panel2.Controls.Add(button);
                        button.Left = 3;
                        button.Top = 25 * k;
                        button.TextAlign = ContentAlignment.MiddleLeft;
                        b[i] = button;
                        b[i].Text = item.Text;
                        k++;
                    }
                }