自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

VB.NET重載事件處理應(yīng)用經(jīng)驗(yàn)分享

開發(fā) 后端
VB.NET重載事件處理的繼承方法,與其他類型的繼承方式大致相同,不過其中一個很不同的地方就是需要在操作過程中刪除Handles 子句。

VB.NET是由微軟開發(fā)的一款面向?qū)ο笳Z言。其應(yīng)用范圍也是比較廣泛。其中一個比較重要的操作就是重載。我們可以利用VB.NET重載事件處理實(shí)現(xiàn)許多特定功能,幫助我們提高實(shí)際開發(fā)效率。

前提

您應(yīng)該非常了解繼承和面向?qū)ο蟮木幊?。有關(guān)詳細(xì)信息,請參閱 Polymorphism in Components(英文)。

繼承的VB.NET重載事件處理程序

在繼承某個組件時,該組件的所有成員都被并入新類中。事件處理程序是在響應(yīng)組件接收的特定事件時執(zhí)行的方法,并且它是和其他組件成員一同被繼承的。以下示例顯示了一個典型的事件處理程序:

 

  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 (" 此按鈕已被單擊 " & _  
  6. Counter.ToString() & " 次。")  
  7. End Sub 

 

只要發(fā)生 Button1.Click 事件,就會執(zhí)行以上方法。方法聲明末尾的 Handles 子句將方法與事件進(jìn)行關(guān)聯(lián)。這是組件中事件處理程序的典型結(jié)構(gòu)。

為了在繼承類中重載此方法,必須添加 Overridable 關(guān)鍵字,并將訪問級別更改為 Protected、Protected Friend 或 Public。以下示例顯示了一個可以被重載的事件處理程序:

 

  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 (" 此按鈕已被單擊 " & _  
  6. Counter.ToString() & " 次。")  
  7. End Sub 

 

組件中繼承的VB.NET重載事件處理程序#t#

重載繼承的事件處理程序與重載任何其他類型的繼承方法基本相同,***不同之處在于:在重載繼承的事件處理程序時,必須刪除 Handles 子句。

重載繼承組件中的方法

將 Overrides 關(guān)鍵字添加到方法聲明中。

注意:不要在方法中添加 Handles 子句。VB.NET重載事件處理程序已經(jīng)與基類中的事件相關(guān)聯(lián),并且此關(guān)聯(lián)將傳遞到繼承類中。也就是說,當(dāng)引發(fā)事件時將執(zhí)行此方法,而不再需要額外的 Handles 子句。

以下示例顯示了如何重載前面示例中的事件處理程序:

 

  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 ("
     此繼承的按鈕已被單擊 " & _  
  6. Counter.ToString() & " 次。")  
  7. End Sub 

 

為什么不需要 Handles 子句

Handles 子句不再與此方法相關(guān)聯(lián)。這并不是疏忽,而是 .NET 框架處理事件的一項(xiàng)重要內(nèi)容。VB.NET重載事件處理程序已經(jīng)與基類中的事件相關(guān)聯(lián),并且此關(guān)聯(lián)將傳遞到繼承類中。也就是說,當(dāng)引發(fā)事件時將執(zhí)行此方法,而不再需要額外的 Handles 子句。如下所示,如果添加 Handles 子句,將創(chuàng)建與事件的附加關(guān)聯(lián),這會使方法在每個事件中被執(zhí)行兩次。

 

  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. ' 每次單擊按鈕時,此變量將遞增  
  6. ' 兩次。  
  7. Counter += 1  
  8. ' 每次單擊按鈕時,消息框?qū)@示  
  9. ' 兩次,并顯示不準(zhǔn)確的信息。  
  10. MessageBox.Show (" 
    此繼承的按鈕已被單擊 " & _  
  11. Counter.ToString() & " 次。")  
  12. End Sub 

 

總結(jié)

VB.NET重載事件處理程序可能造成一些不易察覺的問題,并導(dǎo)致難以查出的錯誤。因此,設(shè)置與事件處理程序的正確關(guān)聯(lián)是非常重要的。請小心使用,并注意已經(jīng)存在的事件關(guān)聯(lián)。

責(zé)任編輯:曹凱 來源: 中國IT實(shí)驗(yàn)室
相關(guān)推薦

2010-01-12 17:02:54

VB.NET文件上傳

2010-01-14 18:14:22

VB.NET開發(fā)特點(diǎn)

2010-01-07 13:29:00

VB.NET正則表達(dá)式

2010-01-13 18:09:09

VB.NET動態(tài)生成代

2009-10-27 11:39:03

VB.NET事件處理程

2009-10-13 17:08:10

CLR VB.NET

2010-01-19 18:52:08

VB.NET處理數(shù)據(jù)行

2010-01-13 16:45:44

VB.NET刪除控件

2010-01-07 15:29:59

VB.NET表達(dá)式

2009-11-03 09:37:33

VB.NET重載

2009-11-02 15:16:07

VB.NET編程

2009-10-14 11:27:20

VB.NET Grou

2009-10-26 13:13:17

VB.NET編碼規(guī)范

2009-10-16 14:31:48

VB.NET Noti

2009-10-23 17:03:18

VB.NET事件編程

2010-01-12 18:12:58

VB.NET事件

2010-01-11 15:31:04

VB.NET拖動窗體

2010-01-14 11:09:35

VB.NET文本框

2010-01-13 17:23:36

VB.NET動態(tài)事件

2009-10-30 16:31:55

VB.NET重載方法
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號