代理_AddHandler

事件只是用來通知一個行爲已經發生的信息。在ObjectARX中,我們使用反應器(reactor)來處理AutoCAD的事件。而在AutoCAD .NET API中,ObjectARX反應器被換成了事件。 

事件處理函數(或者叫回調函數)是用來監視和反饋程序中出現的事件。事件可以以不同的形式出現。

下面介紹代理:

代理是一個存儲方法索引的類(概念與函數指針類似)。代理對方法是類型安全的(與C中的函數指針類似)。代理有特定的形式和返回類型。代理可以封裝符合這種特定形式的任何方法。

代理的一個用途就是作爲產生事件的類的分發器。事件是.NET環境中第一級別的對象。雖然VB.NET把事件處理的許多細節給隱藏掉了,但事件總是由代理來實現的。事件代理可以多次調用(就是它們可以存儲多於1個的事件處理方法的索引)。它們保存了用於事件的一個註冊事件處理的列表。一個典型的代理有以下的形式:

  1. Public Delegate Event (sender as Object, e as EventArgs) 

第一個參數sender表示引發事件的對象。

第二個參數e是一個EventArgs參數(或者是一個派生的類),這個對象通常包含用於事件處理函數的數據。

VB.NET AddHandler語句

要使用事件處理函數,我們必須把它與事件聯繫起來。這要通過使用VB.NET AddHandler語句。AddHandler和RemoveHandler允許你在運行時連接、斷開或修改與事件聯繫的處理函數。

當我們使用VB.NET AddHandler語句時,我們要確定事件引發者的名字,並要使用AddressOf語句來確定事件處理函數,例如:

  1. AddHandler MyClass1.AnEvent, AddressOf EHandler 

前面我們說過要使用RemoveHandler語句從事件處理函數中斷開事件(移除聯繫)。語法如下所示:

  1. RemoveHandler MyClass1.AnEvent, AddressOf EHandler

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章