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
運轉!點擊一下“維護”按鈕,果真只呈現了一個 音訊框:“派生的維護按鈕”。