对事件触发(EventHandler)的简单理解
当某个对象的某个事件或者是执行过程发生了,这个对象可以通过事件通知另外一个对象,另外一个对象可以通过传递进来的参数进行相应的处理;
网上有很多关于事件触发的例子,借鉴其中的一个例子对事件触发做如下理解:
定义事件触发需要如下3步
一、事件参数Class定义
- 定义事件的参数
二、事件Class定义
1、定义一个事件对象
2、定义可以触发此事件的函数
三、使用Class定义
1、定义事件处理函数
2、定义一个事件Class变量
3、对事件Class变量使用+=进行委托
4、对事件Class变量调用可以触发此事件的函数
代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
// 事件参数,继承类EventArgs
public class AddEventData : EventArgs
{
public int a;
public int b;
}
// 事件Class
public class Test
{
// 事件对象
public event EventHandler<AddEventData> OnAddEvent;
// 触发事件
public void CallAddEvent()
{
if (OnAddEvent != null)
{
AddEventData ad = new AddEventData();
ad.a = 1;
ad.b = 2;
OnAddEvent(this, ad);
}
}
}
// 使用Class
class Program
{
static void Main(string[] args)
{
Test tst = new Test();
tst.OnAddEvent += new EventHandler<AddEventData>(AddEvent);
tst.CallAddEvent(); // 触发事件
Console.Read(); // 暂停程序
}
// 事件处理函数
static void AddEvent(object sender, EventArgs e)
{
AddEventData ad = (AddEventData)e;
int c = ad.a + ad.b;
Console.WriteLine("触发事件AddEvent, a+b={0}", c);
}
}
}