读书人

-为什么这个委托和事件总是异常

发布时间: 2011-12-21 23:56:01 作者: rapoo

-----为什么这个委托和事件总是错误,在线等----
假设我的页面有三个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

读书人网 >asp.net

热点推荐