使用Visual Basic.NET重載事件處理常式

來源:互聯網
上載者:User
visual|程式


使用 Visual Basic .NET 重載事件處理常式
Matthew A. Stoecker
Visual Studio Team
Microsoft Corporation
2002 年 2 月

概要:本文介紹在 Visual Basic? .NET 中編程時,如何重載事件處理常式。同時還討論如何使用 Handles 子句。

目錄
簡介
前提
繼承的事件處理常式
組件中繼承的事件處理常式
總結
簡介
在繼承控制項或組件時,將建立封裝基類的所有功能的新控制項或新組件。基類定義的所有事件處理常式都包含在繼承的組件中。本文將分析與繼承的事件處理常式相關的問題,並具體討論如何使用 Visual Basic .NET 開發應用程式。

前提
您應該非常瞭解繼承和物件導向的編程。有關詳細資料,請參閱 Polymorphism in Components(英文)。
繼承的事件處理常式
在繼承某個組件時,該組件的所有成員都被併入新類中。事件處理常式是在回應群組件接收的特定事件時執行的方法,並且它是和其他組件成員一同被繼承的。以下樣本顯示了一個典型的事件處理常式:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e as _
System.EventArgs) Handles Button1.Click
Static Counter as Integer = 0
Counter += 1
MessageBox.Show (" 此按鈕已被單擊 " & _
Counter.ToString() & " 次。")
End Sub
只要發生 Button1.Click 事件,就會執行以上方法。方法聲明末尾的 Handles 子句將方法與事件進行關聯。這是組件中事件處理常式的典型結構。

為了在繼承類中重載此方法,必須添加 Overridable 關鍵字,並將存取層級更改為 Protected、Protected Friend 或 Public。以下樣本顯示了一個可以被重載的事件處理常式:

Protected Overridable Sub Button1_Click(ByVal sender As System.Object, _
ByVal e as System.EventArgs) Handles Button1.Click
Static Counter as Integer = 0
Counter += 1
MessageBox.Show (" 此按鈕已被單擊 " & _
Counter.ToString() & " 次。")
End Sub
組件中繼承的事件處理常式
重載繼承的事件處理常式與重載任何其他類型的繼承方法基本相同,唯一不同之處在於:在重載繼承的事件處理常式時,必須刪除 Handles 子句。

重載繼承組件中的方法

將 Overrides 關鍵字添加到方法聲明中。
注意:不要在方法中添加 Handles 子句。事件處理常式已經與基類中的事件相關聯,並且此關聯將傳遞到繼承類中。也就是說,當引發事件時將執行此方法,而不再需要額外的 Handles 子句。
以下樣本顯示了如何重載前面樣本中的事件處理常式:

Protected Overrides Sub Button1_Click(ByVal sender As System.Object, _
ByVal e as System.EventArgs)
Static Counter as Integer = 0
Counter += 1
MessageBox.Show (" 此繼承的按鈕已被單擊 " & _
Counter.ToString() & " 次。")
End Sub
為什麼不需要 Handles 子句
Handles 子句不再與此方法相關聯。這並不是疏忽,而是 .NET 架構處理事件的一項重要內容。事件處理常式已經與基類中的事件相關聯,並且此關聯將傳遞到繼承類中。也就是說,當引發事件時將執行此方法,而不再需要額外的 Handles 子句。如下所示,如果添加 Handles 子句,將建立與事件的附加關聯,這會使方法在每個事件中被執行兩次。

' 不正確的代碼
Protected Overrides Sub Button1_Click(ByVal sender As System.Object, _
ByVal e as System.EventArgs) Handles Button1.Click
Static Counter as Integer = 0
' 每次單擊按鈕時,此變數將遞增
' 兩次。
Counter += 1
' 每次單擊按鈕時,訊息框將顯示
' 兩次,並顯示不準確的資訊。
MessageBox.Show (" 此繼承的按鈕已被單擊 " & _
Counter.ToString() & " 次。")
End Sub
總結
重載事件處理常式可能造成一些不易察覺的問題,並導致難以查出的錯誤。因此,設定與事件處理常式的正確關聯是非常重要的。請小心使用,並注意已經存在的事件關聯。




相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。