using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
// 定义事件包含数据
public class MyEventArgs : EventArgs
{
private string StrText;
public MyEventArgs(string StrText)
{
this.StrText = StrText;
}
public string GetStrText
{
get
{
return StrText;
}
}
}
// 发布事件的类
class EventSource
{
MyEventArgs EvArgs = new MyEventArgs("触发事件");
// 定义委托
public delegate void EventHandler(object sender, MyEventArgs e);
// 定义事件
public event EventHandler TextOut;
// 激活事件的方法
public void TriggerEvent()
{
if (TextOut == null)
TextOut(this, EvArgs);
}
}
// 订阅事件的类
class TestApp
{
public static void Main()
{
EventSource evsrc = new EventSource();
// 订阅事件
evsrc.TextOut += new EventSource.EventHandler(CatchEvent);
// 触发事件
evsrc.TriggerEvent();
Console.WriteLine("------");
// 取消订阅事件
evsrc.TextOut -= new EventSource.EventHandler(CatchEvent);
// 触发事件
evsrc.TriggerEvent();
Console.WriteLine("------"); // 事件订阅已取消,什么也不执行
TestApp theApp = new TestApp();
evsrc.TextOut += new EventSource.EventHandler(theApp.InstanceCatch);
evsrc.TriggerEvent();
Console.WriteLine("------");
}
// 处理事件的静态方法
public static void CatchEvent(object from, MyEventArgs e)
{
Console.WriteLine("CatchEvent:{0}", e.GetStrText);
}
// 处理事件的方法
public void InstanceCatch(object from, MyEventArgs e)
{
Console.WriteLine("InstanceCatch:{0},e.GetStrText");
}
}