程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> Visual Basic語言 >> VB.NET >> VB.NET之旅(十一)—可視承繼

VB.NET之旅(十一)—可視承繼

編輯:VB.NET

VB.NET之旅(十一)—可視承繼。本站提示廣大學習愛好者:(VB.NET之旅(十一)—可視承繼)文章只能為提供參考,不一定能成為您想要的結果。以下是VB.NET之旅(十一)—可視承繼正文


閉關修練了一早晨VB.NET的承繼順序的我,早上進入公司時自信滿滿。白經理 看到我,問了一句:“學習得怎樣樣?對VB.NET是不是曾經可以上手了? ”我點了搖頭:“應該可以做點事了吧。”“好的, ”白經理拍了拍我肩膀說,“再跟大李好好學習幾天,會無機會的。 ”

失掉指導的指示,我沖了杯咖啡,恭敬地走向大李,放在他的桌 上。大李嘴角一翹,笑著說:“別這麼客氣,來,坐。讓我看看你昨天承繼 學習得怎樣樣。明天我們來看一下VB.NET提供的新的承繼方式,可視化承繼。 ”

“可視化?是不是就是指在可視化編輯器裡就可以完成的繼 承方式?”我跟著問了一句。

大李搖頭說:“當然,就是看得 見的承繼。普通指的就是對窗體的承繼。”

我想了一下說:“ 在VB.NET中,窗體都曾經是類的方式了,假如要完成窗體承繼,是不是生成一個 基類窗體,然後經過聲明Inherits的方式在新窗體中完成對基類窗體的承繼? ”

“大體上是這樣的,但明天我們來看一下怎樣經過可視化編 譯環境來完成這個進程。首先,是建一個基類窗體。”大李一邊說,一邊打 開VB.NET編譯器,從菜單中選擇從“文件”菜單中順次選擇“新 建”和“項目”,翻開“新建項目”對話框。創立了 一個名為 “可視承繼”的 Windows 使用順序。

然後右擊處理 方案資源管理器中的“可視承繼”項目節點並選擇“屬性 ”。在項目的屬性中,將輸入類型從“Windows 使用順序”更改 為“類庫”,然後單擊“確定”。

在“工具 箱”的“Windows 窗體”選項卡上將一個按鈕添加到窗體中。命 名為btnProtected。然後在它的“屬性”窗口中,將 Text 屬性設置 為 “維護”,同時將 Modifiers 屬性設置為 Protected。

接 著大李雙擊 btnProtected 按鈕,切換到代碼窗口,書寫了這樣的代碼:

Private Sub btnProtected_Click(ByVal sender As 

System.Object, _ 
 ByVal e As System.EventArgs) Handles btnProtected.Click 
    MsgBox("protected的按鈕") 
End Sub

接著切換回設計窗口,添加了第二個按鈕btnPrivate,並將 Text 屬性設置為 “公有”, Modifiers 屬性設置為 Private。

雙擊 btnPrivate 按鈕,添加了如下代碼:

Private Sub 

btnPrivate_Click(ByVal sender As System.Object, _ 
ByVal e As System.EventArgs) Handles btnPrivate.Click 
    MsgBox("private的按鈕") 
End Sub

最後從“生成”菜單中選擇“生成”, 在項目的bin文件夾內生成了一個“可視承繼.dll”文件。

“是不是這樣就可以完成基類窗體的建造了? ”

“是呀。”大李手也沒停地說,“我們再經過集 成環境來建一個派生的窗體吧。”

大李從“文件”菜單 中選擇“添加項目”中的“新建項目”,創立了一個名為 “派生窗體”的Windows 使用順序。右擊項目節點,選擇“添加 ”中的“承繼的窗體”。

在彈出的“添加新項 ”對話框中,可以看到曾經選定了“承繼的窗體”,大李點擊了 “翻開”。又彈出一個“承繼選擇器”對話框中,從 “可視承繼.dll”中選擇“Form1”作為要從其中承繼的窗 體,然後單擊“確定”。

於是在“派生窗體”項目 中創立了一個從 “可視承繼”項目中的窗體Form1派生出的窗體,命 名為“InheritanceForm”。

隨即在Windows 窗體設計器中, 派生窗體的承繼而來的按鈕左上角會帶有一個箭頭標志符號。

大李拖動了 一下“維護”按鈕,並恣意地更改了一下按鈕的大小。然後,轉過頭 來對我說:“你來試試改動一下‘公有’按鈕的大小吧。 ”我不以為然的接過鼠標,可是,聽憑我如何點擊,拖拽,它仍紋絲不動。

“啊?出了什麼問題?”我大吃一驚。

“自已想 想喽。”大李開端品嘗我倒給他的咖啡了。

我開端在大腦裡搜索起 這兩天學習的內容,漸漸地轉過彎來,“公有”按鈕在基類窗體內修 飾符被大李設為“Private”,也就是說它在派生類中也不可被更改。 我小心翼翼地向大李闡明我的想法。

“沒錯,別怕說錯嘛。” 大李點了搖頭,“在窗體中的控件屬性也會跟著修飾符的設置而決議派生類 能否對其停止更改。這個按鈕被設為了Private,它的大小與地位屬性當然在派生 類中也無法被更改喽。”

看到我若有所思地點著頭,大李給我出了 道題:“你來試試改動一下在派生窗體中,點擊‘維護’按鈕時 彈出音訊框的內容,就改為‘派生的維護按鈕’吧。”

我跟大李在基類窗體中操作地一樣,雙擊了該按鈕,切換到代碼窗口。寫了這句 代碼:

Private Sub btnProtected_Click(ByVal sender As 

System.Object, _ 
ByVal e As System.EventArgs) Handles btnProtected.Click 
    MsgBox("派生的維護按鈕") 
End Sub

接著,我右擊處理方案資源管理器中的 “派生窗體 ” 項目並選擇“設為啟動項目”。然後,右擊處理方案資源管 理器中的 “派生窗體”項目並選擇“屬性”。在“ 派生窗體 屬性頁”對話框中,將“啟動對象”設置為承繼的窗 體InheritanceForm。

按 F5 鍵運轉使用順序,滿懷欣喜地點擊了一下 “維護”按鈕。咦,後果彈出了兩個音訊框,第一個彈出的是基類窗 體中寫的按鈕音訊內容“Protected的按鈕”,然後才彈出剛寫的音訊 “派生的維護按鈕”。我一下就愣住了,“我不是曾經改寫了 click事情呼應順序的代碼了嗎?為什麼基類的音訊沒有屏蔽掉?”

大李悠悠然喝下一口咖啡,放下杯子。拍了拍我說:“屏蔽?你能屏蔽基類 公有的成員嗎?”

“啊?”我趕忙看了一下基類窗體中 的click事情處置順序。“真的呢,是private sub!”我傻傻地笑起 來。

“關於窗體編程而言,默許的是對本身的處置,沒有思索到對 它的承繼,所以控件的事情處置順序都是以private來修飾的,用於封裝。但是修 改也很容易,不是嗎?”大李又拍了拍我,起身出門了。

我拼命地 搓了搓臉,開端回想了一下完成承繼的辦法,終於開端入手改順序。

首先 ,在基類窗體中寫:

Protected Overridable Sub 

btnProtected_Click(ByVal sender As System.Object, ByVal e As 

System.EventArgs) Handles btnProtected.Click 
    MsgBox("protected的控件") 
End Sub

我正預備到派生類中改寫代碼,大李又回來了,他站到我身後 說:“你先別急著寫,看一下代碼窗口上方的兩個下拉框,右邊一個是類名 ,你選擇一下InheritanceForm類的overrides,在左邊的辦法稱號下拉框中就會 呈現可重寫的辦法的稱號了。”

我按大李的話做,果真,在辦法名 稱下拉框中看到了btnProtected_Click,點擊一下,就會呈現該辦法的空白代碼 段,我往代碼段裡添加了一句音訊框的內容:

Protected Overrides 

Sub btnProtected_Click(ByVal sender As Object, _ 
ByVal e As System.EventArgs) 
    MsgBox("派生的維護按鈕") 
End Sub

運轉!點擊一下“維護”按鈕,果真只呈現了一個 音訊框:“派生的維護按鈕”。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved