成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

VB.NET Override處理方式解讀

開發 后端
VB.NET Override的實現需要使用Overridable 關鍵字,而且還需要我們對其進行重新定義。相關的應用方法將會在文中給出。

在學習了VB.NET這門編程語言后,大家會慢慢的發現這門語言中隱藏的知識是很廣的,有很多功能值得我們去深入的研究。比如VB.NET Override就是其中一個比較難掌握的知識點。在類或控件的繼承中,子類或子控件封裝了父類的所有函數,其中包括事件處理程序。本文將著重討論事件處理程序的VB.NET Override實現方法。

繼承事件處理程序

當組件被繼承時,它的所有成員都被封裝到子類中。事件處理程序是響應特定事件的方法,是組件成員之一,因而也被繼承。請看一個典型的事件處理程序:

  1. Private Sub Button1_Click(ByVal 
    sender As System.Object, 
    ByVal e as _   
  2. System.EventArgs) Handles
     Button1.Click   
  3. Static Counter as Integer = 0   
  4. Counter += 1   
  5. MessageBox.Show (" This button
     has been clicked " & _   
  6. Counter.ToString() & " times.")   
  7. End Sub  

我們看到,宣告部分末尾的 Handles 子句把處理程序關聯到特定的事件上。具體而言,上述代碼將在 Button1.Click 事件發生時運行。這就是用于定義事件處理程序的典型語法。

為了實現VB.NET Override,你必須使用 Overridable 關鍵字,并且重新定義其可見性為 Protected 、 Protected Friend 或者 Public 。下面示范如何 override 事件處理程式:

  1. Protected Overridable Sub 
    Button1_Click(ByVal sender 
    As System.Object, _   
  2. ByVal e as System.EventArgs) 
    Handles Button1.Click   
  3. Static Counter as Integer = 0   
  4. Counter += 1   
  5. MessageBox.Show (" This button 
    has been clicked " & _   
  6. Counter.ToString() & " times.")   
  7. End Sub  

在組件中繼承事件處理程序

事件處理程序的VB.NET Override固然與其它方法的 override 大同小異,有一點卻不得不提:在 override 事件處理程序時必須除去 Handles 子句。

如何 override 組件的事件處理程序

1) 在事件處理程序的宣告部分加入 Overrides 關鍵字

請注意:不要附加 Handles 子句。因為父類的處理程序已經關聯了特定事件,子類將繼承這一切。換句話說,父類所關聯的事件可以激活子類的處理程序,因而這里的 Handles 子句是多余的。

下面示范如何 override 前述事件處理程序:

  1. Protected Overrides Sub 
    Button1_Click(ByVal sender 
    As System.Object, _   
  2. ByVal e as System.EventArgs)   
  3. Static Counter as Integer = 0   
  4. Counter += 1   
  5. MessageBox.Show (" This inherited 
    button has been clicked " & _   
  6. Counter.ToString() & " times.")   
  7. End Sub  

2) 為什么不需要 Handles 子句

前面提到,我們沒有使用關聯事件的 Handles 子句并不是一個疏漏,而是由 .NET 框架的事件處理機制所決定的。父類中的 Handles 子句將事件處理程序關聯到特定事件上,這種關聯將被子類繼承。因此,即令子類中沒有 Handles 子句,父類所關聯的事件也能激活子類的事件處理程序。倘若此時加上 Handles 子句,則處理程序將被再次關聯到事件上。重復關聯的后果是處理程序將被連續激活兩次。例如:

  1. ' 錯誤的代碼   
  2. Protected Overrides Sub 
    Button1_Click(ByVal sender As 
    System.Object, _   
  3. ByVal e as System.EventArgs) Handles
     Button1.Click   
  4. Static Counter as Integer = 0   
  5. ' 本例中使用了 Handles 子句,   
  6. ' 因而每當按鈕 Button1 被點擊一次,   
  7. ' 變量 Counter 將會增加兩次 ;   
  8. Counter += 1   
  9. ' 消息框也會彈出兩次,   
  10. ' 顯示的內容也將違背設計意圖   
  11. MessageBox.Show (" This inherited 
    button has been clicked " & _   
  12. Counter.ToString() & " times.")   
  13. End Sub  

結論

在 Visual Basic .NET 中,事件處理程序的VB.NET Override可能造成難以偵錯的 bug 。例如在使用 Handles 子句關聯事件處理程序時就要格外小心,以免發生重復關聯。

【編輯推薦】

  1. VB.NET基本數據類型實用經驗總結
  2. VB.NET用戶登錄頁面實現技巧分享
  3. VB.NET加密文件實現技巧分享
  4. VB.NET數組賦值怪異現象揭秘
  5. VB.NET自定義屬性應用方式解析
責任編輯:曹凱 來源: pcppc.cn
相關推薦

2010-01-13 17:23:36

VB.NET動態事件

2010-01-07 17:57:22

VB.NET構造函數

2010-01-22 18:32:23

VB.NET數據并發性

2010-01-11 17:12:12

VB.NET事務處理

2010-01-18 17:37:32

VB.NET文本框處理

2010-01-12 18:12:58

VB.NET事件

2010-01-13 09:31:39

VB.NET窗體打印

2010-01-11 11:02:27

VB.NET調用存儲過

2010-01-14 09:55:06

VB.NET IEnu

2009-10-14 16:46:25

VB.NET OnSt

2010-01-08 10:48:05

VB.NET多線程

2010-01-19 17:03:25

VB.NET可執行語句

2010-01-08 10:37:50

VB.NET數據庫

2010-01-18 14:47:42

VB.NET獲取環境變

2010-01-08 14:50:47

VB.NET測試硬盤速

2010-01-07 15:49:10

VB.NET DoLoop

2010-01-12 17:49:03

VB.NET鍵盤輸入

2010-01-11 17:40:36

VB.NET相框效果

2010-01-19 13:36:16

VB.NET可選參數

2009-10-27 11:39:03

VB.NET事件處理程
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 超碰97免费观看 | 国产免费一区二区 | 99re在线观看 | www.亚洲视频.com | 国产一级电影在线观看 | 性一交一乱一伦视频免费观看 | 成人欧美一区二区三区在线播放 | 国产日韩免费观看 | 国内精品久久久久 | 黄色大片视频 | 一区二区三区四区不卡视频 | 女同videos另类 | 亚洲精品福利在线 | av在线一区二区 | 国产伦一区二区三区视频 | 91精品久久久久久久久 | 天天天操操操 | 日韩精品在线视频免费观看 | 成人精品啪啪欧美成 | 成人午夜影院 | 高清av一区 | 999久久久久久久 | 亚洲国产精品久久久 | 韩日在线| 成人精品区| 亚洲第1页 | 国产精品伦一区二区三级视频 | 亚洲免费人成在线视频观看 | 99免费视频 | 日本特黄a级高清免费大片 成年人黄色小视频 | 成年人在线电影 | 亚洲精品二三区 | 亚洲黄色在线 | 国产精品久久一区二区三区 | 亚洲欧美日韩一区 | 五月婷六月丁香 | 亚洲伊人a | 天天躁日日躁狠狠躁2018小说 | 天堂资源 | 一级电影免费看 | 成人在线视频观看 |