国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

使用 Visual Basic .NET 重載事件處理程序(微軟)

2024-07-10 13:04:31
字體:
來源:轉載
供稿:網友
使用 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
總結
重載事件處理程序可能造成一些不易察覺的問題,并導致難以查出的錯誤。因此,設置與事件處理程序的正確關聯是非常重要的。請小心使用,并注意已經存在的事件關聯。
  • 網站運營seo文章大全
  • 提供全面的站長運營經驗及seo技術!
  • 發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    主站蜘蛛池模板: 台州市| 马边| 田阳县| 浦北县| 邯郸县| 蓬安县| 莱西市| 娄底市| 云阳县| 招远市| 东方市| 惠安县| 兴安盟| 丹东市| 晋中市| 尼勒克县| 乳山市| 东山县| 改则县| 图木舒克市| 博野县| 竹北市| 鹿邑县| 阜城县| 正蓝旗| 桓仁| 特克斯县| 惠东县| 东城区| 南丹县| 盈江县| 荥经县| 当阳市| 铜梁县| 丘北县| 秦安县| 晋城| 威远县| 鄱阳县| 剑阁县| 新绛县|