用乙個例子來說明事件的使用。
建立乙個簡單的類,名為filewatch,包含事件onfilechange。該類將檢查在執行應用程式的目錄(當前
目錄,通常是專案名/bin/debug)下,是否存在檔案test.txt。如果檔案被刪除或建立,都將觸發事件。
同時提供乙個方法monitorfile以不斷地查詢該檔案。
方法:在建立乙個可用事件之前,首先宣告乙個委託,放在類的外面。
public delegate void filewatcheventhandler(object sender,eventargs e);
接下來建立類filewatch。然後宣告事件,注意事件的型別即為我們之前定義的委託。
public event filewatcheventhandler filewatchevent;
現在建立方法onfilechange(),當呼叫該方法時將觸發事件:
protected virtual void onfilechange(eventargs e)
}最後,建立方法monitorfile(),
public void monitorfile()
thread.sleep(250);}}
完整**如下:
using system;
using system.threading;
using system.io;
namespace sample.event
public event filewatcheventhandler filewatchevent;
protected virtual void onfilechange(eventargs e)
} public void monitorfile()
thread.sleep(250);
} }}}
使用:建立乙個windows應用程式來測試我們之前建立的filewatch中的事件。首先將剛才建立的專案編譯
,生成assembly:filewatch.dll,然後新增引用。當然直接新增專案引用也可以。然後在windows應用程
序中加入命名空間:
using sample.event;
然後在應用程式類中,定義乙個私有字段,型別為我們之前建立的類filewatch:
public class frmmain : system.windows.forms.form
當觸發事件時,eventhanler會傳遞sender和eventargs類的引用。eventargs類通常是在事件源和觸發事
件器之間傳遞資訊。在本例中,沒有傳遞資訊,也沒有用到eventargs類。而只是將事件新增到了listbox
中。執行結果如下:
結論:在c#中使用事件的要點:
首先,要建立委託,格式為:
public delegate void 委託名(object sender, eventargs e);
注意:委託即c裡的函式指標,在事件中由於要傳遞事件及觸發事件的物件的資訊,因此參數列是固定的。委託名一般格式是:名字+envenhandle。這樣取名比較規範。
然後,建立乙個事件字段:
public event 委託型別 事件名;
注意:event關鍵字代表事件,返回型別為委託;
再定義乙個方法,處理事件,再本例中為onfilechange(eventargs e)。在該方法中應該呼叫事件:
事件名(object ,eventargs);
這裡object一般為本身,實參應為this,eventargs應為onfilechange中傳遞過來的實參,尤其是要傳遞事件的值。
最後還要建立觸發事件的方法。例子中為monitorfile(),在其方法中,當條件滿足則呼叫onfilechange來達到觸發事件的目的。
再使用事件時,通常要定義兩個方法,乙個是和事件定義的委託簽名一致的方法,在本例中為onfilechange(object sender,eventargs e);
注意在例子中,窗體類的onfilechange和事件類的onfilechange是不同的。後者用於呼叫事件,前者則用於繫結事件。繫結事件的方法很簡單,用+=表示新增事件,-=表示刪除事件。
例子中filewatcheventsource.filewatchevent+=new sample.event.filewatcheventhandler(onfilechange);
即為新增事件。
例子中:首先執行緒啟動(thd.start()),然後呼叫monitorfile()方法。引起事件產生,filewatchevent產生後,由於我們將事件filewatchevent繫結到了onfilechange()方法上。因而呼叫本地即視窗類的onfilechange()方法,從而實現在listbox中新增資訊。
C 中事件的使用
用乙個例子來說明事件的使用。建立乙個簡單的類,名為filewatch,包含事件onfilechange。該類將檢查在執行應用程式的目錄 當前 目錄,通常是專案名 bin debug 下,是否存在檔案test.txt。如果檔案被刪除或建立,都將觸發事件。同時提供乙個方法monitorfile以不斷地查...
C 中事件方法的使用
事件是c 中另一高階概念,使用方法和委託相關。奧運會參加百公尺的田徑運動員聽到槍聲,比賽立即進行。其中槍聲是事件,而運動員比賽就是這個事件發生後的動作。不參加該項比賽的人對槍聲沒有反應。從程式設計師的角度分析,當裁判員槍聲響起,發生了乙個事件,裁判員通知該事件發生,參加比賽的運動員仔細聽槍聲是否發生...
C 中的事件
目錄 介紹委託和事件 宣告事件 定義事件 註冊事件 實現事件 觸發事件 為事件增加 新增 刪除 方法 一 介紹委託和事件 事件是特殊化的委託,委託是事件的基礎,所以在介紹事件之前先介紹一下委託。委託 使用委託可以將方法應用 不是方法 封裝在委託物件內,然後將委託物件傳遞給呼叫方法的 這樣編譯的時候 ...