我定义了一个事件
protected void My_Click(object sender, EventArgs e)
    {
       
    }
有多个控件对应这个事件,请问在My_Click里面如何判断是谁调用的?

解决方案 »

  1.   

    如果是个BUTTON就
    swith(((Button)sender).ID)
    {
     case "btnSubmit":
        //...
      break;
     case "btnDelete":
       //...
      break;
     default:
        //....
       break;
    }
      

  2.   


    ImageButton 也一样protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
    {
        swith(((ImageButton)sender).ID) 
        { 
            case "btnSubmit": 
                 //do  Submit
                 break; 
            case "btnDelete": 
                 //do Delete 
                 break; 
            default: 
                 //do else
                 break; 
        }
    }
      

  3.   

    通过sender.id来判断是谁发起的事件
      

  4.   

    简化代码?这个样子肯定要添加一个委托类型。public delegate void BreakHandler(object sender,BreakArgs e) ;把你的那些多个控件的 tag属性设置为 0 、1 、2....建立一个 改变事件的类假如:
    public class Break
    {
          public event BreakHandler ChangeBreak  ; // 定义个事件
           public void OnchangeBreak(object sender,BreakArgs e)
          {
               if(ChangeBreak!=null)
               {
                  ChangeBreak(sender,e);
               }
          }
    }在建立一个你控件所想传入的数值的参数类型public class BreakArgs : EventArgs
    {
     public int n;
     //...
    }让所有控件的处理函数都为:My_Click假如你My_Click事件中调用的是一个 Invoke()方法
    protected void My_Click(object sender, EventArgs e) 

              Break b =new Break(); //实例化改变的类
               b.ChangeBreak += new BreakHandler(Invoke) ;  //事件的连接
               BreakArgs ee = new BreakArgs(); // 实例化传入对象
               ee.n=Convert.ToInt32(((你的控件类型比如:Button)sender).Tag); 
             b.OnChangeBreak(sender,ee) ;//触发事件   
    } private void Invoke(object sender,BreakArgs e)
    {
     //.......
    }-----------------汗,我的想法基本这个样子。随手写的代码,自己调试下,应该可以。思路就是这个样子,但一个控件对应一个事件,现在基本是这个样子。
      

  5.   

    从参数object sender中获取事件发起者的具体对象
      

  6.   

    <asp:button CommandName="del" />
    <asp:button CommandName="Insert" />protected void GenMethod(Object sender, CommandEventArgs e)
    {
    if e.CommandName="Del"
    {}
    else
    {}
    }
      

  7.   

    做个判断是那个事件,然后直接调用那个事件就行了的。
     My_Click(sender, e)
    我以前用过一次的。
      

  8.   

    你的button 名字叫做btnOK  if(sender.Equal(btnOK))……
      

  9.   

    protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
    {
        swith(((ImageButton)sender).Text) 
        { 
            case "btnSubmit": 
                 //do  Submit
                 break; 
            case "btnDelete": 
                 //do Delete 
                 break; 
            default: 
                 //do else
                 break; 
        }
    }
    这样