-----为什么这个委托和事件总是错误,在线等----
假设我的页面有三个button
public delegate void Handleraa(object sender, System.EventArgs e);
public event Handleraa myevent;
private void Page_Load(object sender, System.EventArgs e)
{
this.Button2.Click += new System.EventHandler(this.Button1_Click);//这行把Button1_Click给Button2.Click就没有错
myevent=new Handleraa(this.Button1_Click);
this.Button3.Click +=myevent; //错误,提示无法将类型“Handleraa”隐式转换为“System.EventHandler”
}
public void Button1_Click(object sender, System.EventArgs e)
{
Response.Write( "fsdfsdf ");
}
即使我强制转换this.Button3.Click +=(System.EventHandler)myevent也还是一样
为什么 ???!!!
------解决方案--------------------对于自定义事件,最好使用EventHandler或EventHandler <T> ,而不是自己来定义一个委托.比如:
public event EventHandler someEvent;
------解决方案--------------------使用EventHandler相当于是按一个约定或者说标准来做,使用自定义的委托可以定义事件,但这样失去了标准.
------解决方案--------------------class Button
{
public event EventHandler Click;
}
//是EventHandler委托的事件
你定义的Handleraa貌似 返回值和参数列表都一致 但确是两个不同的东西
就比方有对双胞胎 长得一样 而且都叫张三 你却不能把他们当作一个人把
------解决方案--------------------Button3.Click 的委托类型为EventHandler