標籤:style color 使用 ar strong 資料 sp on c
1.聲明事件
EventHandler是一個預定義的委託,它定義了一個無傳回值的方法。在 .Net Fromwork中,他的格式:
public delegate void EventHandler (Object sender, EvenArgs e)
其中sender的類型為Object,表示時間發行者本身,e用來傳遞事件的相關資訊,資料類型為EvenArgs及其衍生類別。
標準的EvenArgs並不包含任何事件數目據, 因此EventHandler專用於表示不產生資料的事件的事件方法。如果要事件產生資料,則必須提供自訂的事件類型,該類型從EventArgs派生,提供儲存時間資料所需要的全部欄位或屬性,這樣時間發行者可以將特定的資料發送給接收者。
用標準的EventHandler委託可以聲明不包含資料的標準事件:
public event EvenHandler 事件名;
要產生包含資料的事件,必須先自訂事件數目據類型,有兩種:
(1)先定義委託,再定義事件。
public class 事件數目據類型 : EventArgs {//封裝資訊;}
public delegate 傳回值類型 委託類型名 (Object sender, 事件數目據類型 e);
public event 委託類型 事件名;
(2)使用泛型EventHandler定義事件。
public class 時間資料類型 : EventArgs {//封裝資訊;}
public event EventHandler<時間資料類型>事件名;
2.訂閱事件
聲明事件的實質是定義一個資料變數,並不意味著就能成功觸發事件,還要:(1)在事件的接收者中定義一個方法來回應時間,(2)通過建立委派物件把事件與事件方法聯絡起來(又稱綁定事件或訂閱事件)。負責綁定事件與事件方法的類就稱為時間的訂閱者。
事件名 += new 事件委託名(事件方法);
注意:
(1)訂閱事件的操作由事件的接收者實現。
(2)每個事件都可以有多個處理常式,多個程式按順序調用。如果一個處理常式發生異常,還未處理的程式則沒有機會接受事件。為此,建議事件處理常式迅速處理事件,並避免發生異常。
(3)訂閱事件必須見一個與事件具有相同類型的委派物件,把事件方法當作委託目標,使用“+=”運算子把事件方法添加到來源物件的事件中。
(4)若要取消訂閱事件,可使用“-=”。
3.觸發事件
在C#中,觸發事件與委託點用相同,但要注意使用匹配的事件參數。事件一旦觸發,相應的事件方法就會被調用,如果該事件沒有任何處理常式,則該事件為空白。
4.總結:
第一步:定義相關資訊類;
第二步:定義事件警報器;
第三步:聲明事件產生時調用的方法;
第四步:訂閱事件;
第五步:觸發事件;
5.採用基於事件驅動模型進行程式設計,其實過程包括五部分:
(1)定義事件相關資訊類;
(2)在事件發行者類(事件來源)中聲明事件,並聲明一個負責觸發事件的方法;
(3)在事件接受者類中聲明事件產生時調用的方法;
(4)在事件接受者類中訂閱事件;
(5)在事件接收者類中觸發事件。
初學筆記還望大家多多指點!!!
初學筆記(C#事件)