人人做人人澡人人爽欧美,国产主播一区二区,久久久精品五月天,羞羞视频在线观看免费

當(dāng)前位置:蘿卜系統(tǒng)下載站 > 技術(shù)開(kāi)發(fā)教程 > 詳細(xì)頁(yè)面

運(yùn)用 Visual Basic .NET 重載事件處理程序(zt)

運(yùn)用 Visual Basic .NET 重載事件處理程序(zt)

更新時(shí)間:2022-06-26 文章作者:未知 信息來(lái)源:網(wǎng)絡(luò) 閱讀次數(shù):

[TD]使用 Visual Basic .NET 重載事件處理程序
Matthew A. Stoecker
Visual Studio Team
Microsoft Corporation
2002 年 2 月

概要:本文介紹在 Visual Basic® .NET 中編程時(shí),如何重載事件處理程序。同時(shí)還討論如何使用 Handles 子句。

目錄

  • 簡(jiǎn)介
  • 前提
  • 繼承的事件處理程序
  • 組件中繼承的事件處理程序
  • 總結(jié)

簡(jiǎn)介


在繼承控件或組件時(shí),將創(chuàng)建封裝基類的所有功能的新控件或新組件。基類定義的所有事件處理程序都包含在繼承的組件中。本文將分析與繼承的事件處理程序相關(guān)的問(wèn)題,并具體討論如何使用 Visual Basic .NET 開(kāi)發(fā)應(yīng)用程序。

前提

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

繼承的事件處理程序


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

只要發(fā)生 Button1.Click 事件,就會(huì)執(zhí)行以上方法。方法聲明末尾的 Handles 子句將方法與事件進(jìn)行關(guān)聯(lián)。這是組件中事件處理程序的典型結(jié)構(gòu)。
為了在繼承類中重載此方法,必須添加 Overridable 關(guān)鍵字,并將訪問(wèn)級(jí)別更改為 ProtectedProtected FriendPublic。以下示例顯示了一個(gè)可以被重載的事件處理程序:
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

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


重載繼承的事件處理程序與重載任何其他類型的繼承方法基本相同,唯一不同之處在于:在重載繼承的事件處理程序時(shí),必須刪除 Handles 子句。
重載繼承組件中的方法
  • Overrides 關(guān)鍵字添加到方法聲明中。
    注意:不要在方法中添加 Handles 子句。事件處理程序已經(jīng)與基類中的事件相關(guān)聯(lián),并且此關(guān)聯(lián)將傳遞到繼承類中。也就是說(shuō),當(dāng)引發(fā)事件時(shí)將執(zhí)行此方法,而不再需要額外的 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 子句不再與此方法相關(guān)聯(lián)。這并不是疏忽,而是 .NET 框架處理事件的一項(xiàng)重要內(nèi)容。事件處理程序已經(jīng)與基類中的事件相關(guān)聯(lián),并且此關(guān)聯(lián)將傳遞到繼承類中。也就是說(shuō),當(dāng)引發(fā)事件時(shí)將執(zhí)行此方法,而不再需要額外的 Handles 子句。如下所示,如果添加 Handles 子句,將創(chuàng)建與事件的附加關(guān)聯(lián),這會(huì)使方法在每個(gè)事件中被執(zhí)行兩次。
' 不正確的代碼Protected Overrides Sub Button1_Click(ByVal sender As System.Object, _ ByVal e as System.EventArgs) Handles Button1.Click Static Counter as Integer = 0 ' 每次單擊按鈕時(shí),此變量將遞增 ' 兩次。 Counter += 1 ' 每次單擊按鈕時(shí),消息框?qū)@示 ' 兩次,并顯示不準(zhǔn)確的信息。 MessageBox.Show (" 此繼承的按鈕已被單擊 " & _Counter.ToString() & " 次。")End Sub

總結(jié)


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

溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!

本類教程下載

系統(tǒng)下載排行

網(wǎng)站地圖xml | 網(wǎng)站地圖html
主站蜘蛛池模板: 顺昌县| 黄梅县| 彰化市| 鄯善县| 澜沧| 汉阴县| 阿克苏市| 西安市| 盐亭县| 新安县| 顺平县| 大邑县| 邵武市| 抚州市| 葫芦岛市| 墨竹工卡县| 乡城县| 铜山县| 连州市| 高阳县| 桐柏县| 安顺市| 金华市| 安仁县| 隆昌县| 通渭县| 军事| 都安| 锡林浩特市| 谷城县| 称多县| 柞水县| 青神县| 安岳县| 临武县| 河津市| 左贡县| 衡阳县| 苏尼特右旗| 盐池县| 六安市|