事件是委托的一个很重要的应用,其实事件就是委托的实例,事件一般由外部触发产生
例如:当我们设计一个按钮的控件的时候,我们可以捕获到用户点击按钮,但是我们不知道用户点击按钮时需要进行什么操作,这个时候就可以通过事件来让用户自己定义按钮的操作
下面看看事件的使用
1、事件定义
1)定义事件委托 2)定义事件参数 3)实例化委托(即事件) 4)定义触发事件函数(用来触发事件)
public delegate void MyEventDelegate(object sender, MyEventArgs e); public class EventDemo { //定义事件 public event MyEventDelegate OnMyEvent; //定义事件触发函数 public void OnEvent() { if (OnMyEvent != null) { //执行注册过的事件函数 OnMyEvent(this, new MyEventArgs("事件被触发")); } } } //定义事件参数类 public class MyEventArgs:EventArgs { public string Msg { get; set; } public MyEventArgs(string msg) { this.Msg = msg; } }
2、事件的使用
注册事件,触发事件
class Program { static void Main(string[] args) { Program p = new Program(); EventDemo demo = new EventDemo(); demo.OnMyEvent += new MyEventDelegate(p.demo_OnMyEvent); //注册事件 demo.OnEvent(); //触发事件 } public void demo_OnMyEvent(object sender, MyEventArgs e) { Console.WriteLine("用户自定义的事件函数被执行"); } }