簡(jiǎn)述VB.NET AddHandler語句
#t#在向大家詳細(xì)介紹VB.NET AddHandler語句之前,首先讓大家了解下代理是一個(gè)存儲(chǔ)方法索引的類,然后全面介紹VB.NET AddHandler語句。事件只是用來通知一個(gè)行為已經(jīng)發(fā)生的信息。在ObjectARX中,我們使用反應(yīng)器(reactor)來處理AutoCAD的事件。而在AutoCAD .NET API中,ObjectARX反應(yīng)器被換成了事件。
事件處理函數(shù)(或者叫回調(diào)函數(shù))是用來監(jiān)視和反饋程序中出現(xiàn)的事件。事件可以以不同的形式出現(xiàn)。
在介紹AutoCAD .NET API中的事件之前,讓我們先來簡(jiǎn)單地了解一下代理。
代理
代理是一個(gè)存儲(chǔ)方法索引的類(概念與函數(shù)指針類似)。代理對(duì)方法是類型安全的(與C中的函數(shù)指針類似)。代理有特定的形式和返回類型。代理可以封裝符合這種特定形式的任何方法。
代理的一個(gè)用途就是作為產(chǎn)生事件的類的分發(fā)器。事件是.NET環(huán)境中***級(jí)別的對(duì)象。雖然VB.NET把事件處理的許多細(xì)節(jié)給隱藏掉了,但事件總是由代理來實(shí)現(xiàn)的。事件代理可以多次調(diào)用(就是它們可以存儲(chǔ)多于1個(gè)的事件處理方法的索引)。它們保存了用于事件的一個(gè)注冊(cè)事件處理的列表。一個(gè)典型的代理有以下的形式:
- Public Delegate Event (sender as Object, e as EventArgs)
***個(gè)參數(shù)sender表示引發(fā)事件的對(duì)象。
第二個(gè)參數(shù)e是一個(gè)EventArgs參數(shù)(或者是一個(gè)派生的類),這個(gè)對(duì)象通常包含用于事件處理函數(shù)的數(shù)據(jù)。
VB.NET AddHandler語句
要使用事件處理函數(shù),我們必須把它與事件聯(lián)系起來。這要通過使用VB.NET AddHandler語句。AddHandler和RemoveHandler允許你在運(yùn)行時(shí)連接、斷開或修改與事件聯(lián)系的處理函數(shù)。
當(dāng)我們使用VB.NET AddHandler語句時(shí),我們要確定事件引發(fā)者的名字,并要使用AddressOf語句來確定事件處理函數(shù),例如:
- AddHandler MyClass1.AnEvent, AddressOf EHandler
前面我們說過要使用RemoveHandler語句從事件處理函數(shù)中斷開事件(移除聯(lián)系)。語法如下所示:
- RemoveHandler MyClass1.AnEvent, AddressOf EHandler