在c#中~事件怎么回事啊?和委托有什么关系?通俗点~最好自己的话!谢谢

来源:百度知道 编辑:UC知道 时间:2024/04/30 15:36:00

C#中的事件处理程序
C#中的事件处理程序是一个带有特定输入参数的代理,如下所示:
public delegate void MyEventHandler(object sender, MyEventArgs e);

上面定义中的第一个参数(sender)指定了发生事件的对象,第二个参数(e)存储着在事件处理程序中要用到的数据。MyEventArgs类是继承EventArgs类得来的,EventArgs类是MouseEventArgs、ListChangedEventArgs等更专业化的类的基础类。对于GUI事件,我们可以使用这些特定的EventArgs类的对象,而无需自己创建特定的EventArgs类。然而,对于非GUI事件而言,我们仍然需要创建自己的特定的EventArgs类,存储希望向代理对象传递的数据。我们可以通过继承EventArgs类创建自己特定的EventArgs类:
public class MyEventArgs EventArgs{
public string m_myEventArgumentdata;
}
在事件处理程序中,代理对象的调用需要用到event关健字,如下所示:
public event MyEventHandler MyEvent;
下面我们将建立二个类,体会.Net框架中事件处理机制的工作原理。在对代理的讨论的第二个步骤中,要求我们定义与定义的代理有完全相同的输入参数的方法。在我们的例子中,类A将提供事件处理程序(与代理对象具有相同输入参数的方法。),它将创建代理对象(对代理讨论中的第三步)并安装事件处理程序。类A然后会将代理对象传递给类B。当类B中有事件出现时,它就会执行类A中的事件处理程序方法。
using System;
//步骤1:创建代理对象
public delegate void MyHandler1(object sender,MyEventArgs e);
public delegate void MyHandler2(object sender,MyEventArgs e);
//步骤2:创建事件处理程序方法
c