1. 類對象代碼
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Timers; namespace WinformEventTest { /// <summary> /// 定義了一個 ShowString 事件的對象類 /// </summary> internal class EventClass { /// <summary> /// 聲明委托 /// </summary> /// <param name="a">委托傳遞的參數</param> public delegate void BroadcastEventHander(string a); /// <summary> /// 聲明委托相關的事件 /// </summary> public event BroadcastEventHander Broadcast; /// <summary> /// 聲明定時器 /// </summary> private Timer _timer; /// <summary> /// /// </summary> public EventClass() { _timer = new Timer(1000); _timer.Elapsed += new ElapsedEventHandler(Timer_Elapsed); _timer.Enabled = true; } /// <summary> /// 內部定時器事件,用於模擬產生事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void Timer_Elapsed(object sender, ElapsedEventArgs e) { try { Broadcast("來自 EventClass 對象事件的消息:" + DateTime.Now.ToString()); // 產生事件 } catch (Exception) { } } } }
2.Winform調用舉例
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace WinformEventTest { public partial class Form1 : Form { // 聲明變量 EventClass _eventClass; /// <summary> /// 控制台打印字符串 /// </summary> /// <param name="a"></param> public void ConsoleShowTxt(string a) { Console.WriteLine(DateTime.Now.ToString() + " | " + a + "\n"); } public Form1() { InitializeComponent(); // Member initialize _eventClass = new EventClass(); // Member event initialize _eventClass.Broadcast += new EventClass.BroadcastEventHander(ConsoleShowTxt); // 委托類事件(Broadcast)綁定實際處理方法(ConsoleShowTxt) } } }
