1.申請一個委託
delegate void xxxxxHandler(object sender,EventArgs e);
xxxxxHandler 當然可以是其他任意合法名字,用Handler後綴是好習慣,一看就知道這是一個委託。委託不一定要帶參數。
2.定義一個event
event xxxxxHandler xxxxxEvent;
event可視作一個指針數組,裏面保存着事件響應方法的指針。跟Handler一樣,用Event作爲後綴一看就知道這是個event。
3.event 觸發點
必須是可執行代碼內(而非變量定義部分),比如一個類的某個方法中,這叫訂閱事件。
public class abc
{
public void OnxxxxxEvent()
{
xxxxxEvent.Invoke(參數1,參數2);
}
}
事件觸發用其Invoke方法實現,Invoke遍歷event這個指針數組,逐一執行添加到裏面的方法。
事件被Invoke前,必須有方法加入,xxxxxEvent += xxx(object sender,EventArgs e)
否則其值是null而引發‘未將對象引用設置到對象的實例’的錯誤。