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語言編程百例》,按照例子來學習比較容易上手,比直接看那些原理性的書籍強 //
是寫程序的機試還是理論的筆試?
機試推薦《程序設計引導及在線實踐》,大綱級書籍,具體鏈接:ai.pku.edu.cn/book/
理論的筆試肯定還是以譚浩強的為主,不過確實有些亂,你不妨買本它配套的習題之類的看看,譚浩強此書配套習題相當多,基本上都大同小異,根據手頭已有的資料為主來選吧,具體不推薦了。
vc6.0 這個有學習版的 專業版的 企業版的
只是學的話 學習版的一般幾十兆的就行了 企業版的會有幾百兆很大