webform窗体中有四个服务器按钮控件,分别是Button1,Button2,Button3,Button4,我现在希望能写一个通用的方法Btn_click(object sender,EventArgs e,int i),应用于相应Button的点击事件。
如:
Btn_click(object sender,EventArgs e,int i)
{
    label1.text="你点击了Button" + i.ToString();
}
麻烦大侠把大致的思路(步骤)告诉我一下,不用贴代码,不甚感激另外,我按照网上的提示,先声明一个委托,public Delegate void delegate_btn_click(object sender,EventArgs e,int i);然后声明一个事件public event delegate_btn_click btn_click;但是这个事件的实现代码label1.text="你点击了Button" + i.ToString();
该写在哪呢?我搞不懂,还请附加指点。

解决方案 »

  1.   

    何必这么麻烦, 在事件里将 Button1,Button2,Button3,Button4 按钮的事件全都选择为Btn_click就行了.
    Btn_click(object sender,EventArgs e)
    {
    label1.text=string.Format("你点击了{0}", ((Button)sender).Name);

      

  2.   

    //把几个button的Click事件都+=到下面方法可以
    Btn_click(object sender,EventArgs e)
    {
        label1.text=string.Format("你点击了{0}", ((Button)sender).Name);
        //这里可以再判断
         if(sender.GetType().Name="button1"){}
         else if(sender.GetType().Name="button2"){}
        //...     
      

  3.   

    奇怪,我依照二位的意思,先取得button名称,再取得相应的数字i,string btn_name = ((Button)sender).Name;却行不通,“System.Web.UI.WebControls.Button”并不包含“Name”的定义,为什么呢
      

  4.   

            protected void btn_Click(object sender, EventArgs e)
            {
                Label1.Text = "你点击了" + ((Button)sender).Text.ToString();
            }
    加入上面代码  然后将Button1 Button2 Button3 Button4的click时间选为 btn_Click方法即可
      

  5.   

    奇怪,我依照二位的意思,先取得button名称,再取得相应的数字i,string btn_name = ((Button)sender).Name;却行不通,“System.Web.UI.WebControls.Button”并不包含“Name”的定义,为什么呢
    --------------------------
    btn_name  类型是 string类型的  Button可没有name属性 只有 ID和 Text属性
    string btn_name = ((Button)sender).Id.ToString()
      

  6.   

    发现自己真的有蛮蠢,居然连这个ID和Name都没有想到,一二楼提示的Name是winform里面的控件属性,webform里面是ID
      

  7.   

    Button1.Tag = 1;
    Button2.Tag = 2;
    Button3.Tag = 3;
    Button4.Tag = 4;Btn_click(object sender, EventArgs e) 

      label1.text = "你点击了Button" + (sender as Button).Tag;
    }
      

  8.   

    Tag属性也是winform里面的Button才有的吧,我取ID,然后用substring取得那个数字就解决了,谢谢各位
      

  9.   

    foreach(Control btn in this.Controls)
    {
       if(btn is Button)
       {
          (btn as Button).Click += new EventHandler(Button_Click);
       }
    }void Button_Click(object Sender, EventArgs e)
    {
       MessageBox.Show("You Click {0} Button!", (btn as Button).Name);
    }