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

首頁 > 編程 > .NET > 正文

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

2024-07-10 13:02:04
字體:
來源:轉載
供稿:網友
[td]使用 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 關鍵字,并將訪問級別更改為 protectedprotected friendpublic。以下示例顯示了一個可以被重載的事件處理程序:
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

總結


重載事件處理程序可能造成一些不易察覺的問題,并導致難以查出的錯誤。因此,設置與事件處理程序的正確關聯是非常重要的。請小心使用,并注意已經存在的事件關聯。注冊會員,創建你的web開發資料庫,
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 铜陵市| 申扎县| 延安市| 万荣县| 吉林省| 龙州县| 长子县| 枝江市| 香格里拉县| 玛纳斯县| 扎囊县| 梅州市| 稷山县| 颍上县| 通渭县| 巴林左旗| 威海市| 和平区| 抚州市| 榕江县| 工布江达县| 辽中县| 额济纳旗| 宜昌市| 青田县| 福安市| 肇庆市| 亳州市| 横山县| 井研县| 桃江县| 依兰县| 故城县| 高台县| 龙游县| 灵石县| 瑞安市| 金溪县| 土默特左旗| 长治县| 略阳县|