代码中实现了三个自定义事件,分别为自定义事件、自定义事件及自定义参数、使用Action自定义事件。
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace AppMain
{
/// <summary>
/// 入口
/// </summary>
public class RunEventDemo
{
#region 用Action定义事件测试
public void RunProgramThree()
{
EventDemoThree edth = new EventDemoThree();
edth.CustomerEvent += new Action<object, EventArgs>(edth_CustomerEvent);
//触发事件
edth.OnCustomerEvent();
}
void edth_CustomerEvent(object obj, EventArgs e)
{
Console.WriteLine("已调用Actiion执行的事件");
}
#endregion
#region 使用自定义事件参数事件测试
public void RunProgramTwo()
{
EventDemoTwo edt = new EventDemoTwo();
edt.CustomerEvent += new EventDemoTwo.CustomerEventHander(edt_CustomerEvent);
//创建事件参数
CustomerEventArgs cea = new CustomerEventArgs();
cea.CustomerMsg = " test";
//触发事件
edt.OnCustomerEvent(cea);
}
void edt_CustomerEvent(object sender, CustomerEventArgs e)
{
Console.WriteLine("你传入的参数值为:" + e.CustomerMsg);
}
#endregion
#region 无参的自定义事件测试
public void RunProgramOne()
{
//事件接收者
EventDemoOne ed = new EventDemoOne();
//4.注册事件处理程序
ed.customerEvent += new EventDemoOne.CustomerEventHander(RunDemo_customerEvent);
//6.调用事件
ed.OnEvent();
}
//5.编写事件处理程序
public void RunDemo_customerEvent(object sender, EventArgs e)
{
Console.WriteLine("test");
}
#endregion
}
#region无参的自定义事件
/// <summary>
/// 无参的自定义事件
/// </summary>
public class EventDemoOne
{
//1.声明关于事件的委托;
public delegate void CustomerEventHander(object sender, EventArgs e);
//2.声明事件;
public event CustomerEventHander customerEvent;
//3.编写引发事件的函数;
public void OnEvent()
{
if (this.customerEvent != null)
{
this.customerEvent(this, new EventArgs());
}
}
}
#endregion
#region自定义事件,使用自定义事件参数
/// <summary>
/// 自定义事件参数
/// </summary>
public class CustomerEventArgs : EventArgs
{
public string CustomerMsg { get; set; }
}
public class EventDemoTwo
{
public delegate void CustomerEventHander(object sender, CustomerEventArgs e);
public event CustomerEventHander CustomerEvent;
//3.编写引发事件的函数,注意多了个参数;
public void OnCustomerEvent(CustomerEventArgs e)
{
this.CustomerEvent(this, e);
}
}
#endregion
#region使用Action自定义事件
public class EventDemoThree
{
public event Action<object, EventArgs> CustomerEvent;
public void OnCustomerEvent()
{
this.CustomerEvent(this, new EventArgs());
}
}
#endregion
}