C 中事件的使用

2021-06-06 14:25:36 字數 2416 閱讀 1304

用乙個例子來說明事件的使用。

建立乙個簡單的類,名為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 中的事件

目錄 介紹委託和事件 宣告事件 定義事件 註冊事件 實現事件 觸發事件 為事件增加 新增 刪除 方法 一 介紹委託和事件 事件是特殊化的委託,委託是事件的基礎,所以在介紹事件之前先介紹一下委託。委託 使用委託可以將方法應用 不是方法 封裝在委託物件內,然後將委託物件傳遞給呼叫方法的 這樣編譯的時候 ...