代碼中實現了三個自訂事件,分別為自訂事件、自訂事件及自訂參數、使用Action自訂事件。
using System;
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
}