问题描述
 
我有一个窗体上有许多个按钮,这些按钮都放在了tableLayoutPanel中,我需要编用这些按钮的click()事件,但是由于按钮实在太多(约五十来个),一个一个的编写实在是太烦,它们的click()事件中的内容都是把所被单击按钮的名字赋给一个button数组,例:
   button1_click()
   {
   button[i]=button1;
   }
请教一下有没有简单的办法可以解决这个问题,先谢谢了!

解决方案 »

  1.   

    你想找到是那个button被单击的话,只能一个个比较了
      

  2.   

            private void button2_Click(object sender, EventArgs e)
            {
                for (int i = 0; i < 10; i++)        // 10个控件
                {
                    Button btn = new Button();
                    btn.Name = btn.Text = "btn" + i.ToString();
                    btn.Parent = this;                              // 此处设置btn的父控件为窗体
                    btn.Location = new Point(10, i * 20);           // 定制位置
                    btn.Click += new EventHandler(Custom_Click);    // 添加事件
                }
            }
            private void Custom_Click(object sender, EventArgs e)
            {
                MessageBox.Show(string.Format("Name:{0},Text:{1}", ((Button)sender).Name, ((Button)sender).Text));
            }
      

  3.   

    在form_load的时候,遍历tableLayoutPanel,
    foreach (Control control in tableLayoutPanel.Controls)
                {
                    if(control is Button)
                    {
                        ((Button)control).Click += new EventHandler(button1_click);
                    }
                }void button1_click(object sender, EventArgs e)
            {
                button[i]= sender as Button;
            }
      

  4.   

          每个Button的单击事件都连接  button1_Click  Button[] m_bs = new Button[100];
            int i = 0;
            private void button1_Click(object sender, EventArgs e)
            {
                m_bs[i] = (Button)sender;
                i++;           
            }