溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

VB.NET中怎么實(shí)現(xiàn)編程事件

發(fā)布時(shí)間:2021-08-11 15:43:09 來源:億速云 閱讀:123 作者:Leah 欄目:編程語言

VB.NET中怎么實(shí)現(xiàn)編程事件,針對(duì)這個(gè)問題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡(jiǎn)單易行的方法。

看一個(gè)關(guān)于VB.NET編程的例子,在這里呢我使用另一種方法來說明當(dāng)你建立和注冊(cè)一個(gè)事件處理程序時(shí)到底發(fā)生了什么事情。一旦你明白事情是怎么回事,你也許會(huì)感激使用了更簡(jiǎn)潔的語法實(shí)現(xiàn)了相同的目標(biāo),一起來看看吧:

'建立銀行帳號(hào)對(duì)象  Dim account1 As New BankAccount()  '注冊(cè)事件處理程序  AddHandler account1.LargeWithdraw, AddressOf AccountHandlers.LogWithdraw  AddHandler account1.LargeWithdraw, AddressOf AccountHandlers.GetApproval

因?yàn)锳ddHandler語句期待一個(gè)委托對(duì)象作為第二個(gè)參數(shù),你能使用速記語法--AddressOf操作符后緊跟目標(biāo)處理方法的名字。當(dāng)Visual Basic .NET編譯器看到該語法時(shí),它接著產(chǎn)生額外的代碼來建立作為事件處理程序服務(wù)的委托對(duì)象。VB.NET編程語言中的AddHandler語句的補(bǔ)充是RemoveHandler語句。RemoveHandler需要的參數(shù)與AddHandler的相同,它的效果相反。它通過事件源調(diào)用remove_LargeWithdraw方法從已注冊(cè)的處理方法列表中刪除目標(biāo)處理方法。

Dim account1 As New BankAccount()  '注冊(cè)事件處理程序  AddHandler account1.LargeWithdraw, AddressOf AccountHandlers.LogWithdraw  '刪除事件處理程序注冊(cè)  RemoveHandler account1.LargeWithdraw, AddressOf AccountHandlers.LogWithdraw

你已經(jīng)看到了實(shí)現(xiàn)使用事件的回調(diào)設(shè)計(jì)需要的所有步驟了。代碼顯示了一個(gè)完整的應(yīng)用程序,在該程序中已經(jīng)注冊(cè)了兩個(gè)事件處理程序從BankAccount對(duì)象的LargeWithdraw事件接收回調(diào)通知。

Delegate Sub LargeWithdrawHandler(ByVal Amount As Decimal)  Class BankAccount  Public Event LargeWithdraw As LargeWithdrawHandler  Sub Withdraw(ByVal Amount As Decimal)  '如果需要的話就發(fā)送通知  If (Amount > 5000) Then  RaiseEvent LargeWithdraw(Amount)  End If  '執(zhí)行撤消  End Sub  End Class  Class AccountHandlers  Shared Sub LogWithdraw(ByVal Amount As Decimal)  '把撤消信息寫入日志文件  End Sub  Shared Sub GetApproval(ByVal Amount As Decimal)  '阻塞直到管理者批準(zhǔn)  End Sub  End Class  Module MyApp  Sub Main()  '建立銀行帳號(hào)對(duì)象  Dim account1 As New BankAccount()  '注冊(cè)事件處理程序  AddHandler account1.LargeWithdraw, _  AddressOf AccountHandlers.LogWithdraw  AddHandler account1.LargeWithdraw, _  AddressOf AccountHandlers.GetApproval  '做一些觸發(fā)回調(diào)的事情  account1.Withdraw(5001)  End Sub  End Module


關(guān)于VB.NET中怎么實(shí)現(xiàn)編程事件問題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI