逐步解說:示範視覺化繼承
視覺化繼承可讓您查看基底表單上的控制項,並加入新的控制項。 在本逐步解說中,您將建立基底表單,並編譯為類別庫。 您將匯入此類別庫至另一個專案,並建立繼承自基底表單的新表單。 在這個逐步解說期間,您將了解如何:
建立包含基底表單的類別庫專案。
加入屬性可由基底表單衍生類別修改的按鈕。
加入無法由基底表單繼承者修改的按鈕。
建立包含繼承自
BaseForm
表單的專案。
最後,本逐步解說將示範繼承的表單上私用和受保護控制項之間的差異。
警告
並非所有控制項都支援來自基底表單的視覺化繼承。 下列控制項並不支援在此逐步解說中所描述的案例:
繼承的表單中的這些控制項永遠唯讀,不論您使用的修飾詞為何 (private
protected
或 public
)。
建立包含基底表單的類別庫專案
在 Visual Studio 的 [檔案 ] 功能表中,選擇 [ 新增 > 專案 ] 以開啟 [ 新增專案 ] 對話方塊。
建立名為
BaseFormLibrary
的 Windows Forms 應用程式。若要建立類別庫,而不是標準 Windows Forms 應用程式,請在 方案總管 中 ,以滑鼠右鍵按一下 BaseFormLibrary 專案節點,然後選取 [ 屬性 ]。
在專案的屬性中,將 [輸出類型 ] 從 Windows 應用程式 變更為 [類別庫 ]。
從 [檔案] 功能表中,選擇 [ 全部 儲存] 將專案和檔案儲存到預設位置。
下面兩個程序將按鈕加入至基底表單。 為了示範視覺化繼承,您將藉由設定 Modifiers
屬性,授與這些按鈕不同存取層級。
新增基底表單繼承者可以修改的按鈕
在設計工具中,開啟 Form1。
在 [工具箱 ] 的 [ 所有 Windows Forms] 索引標籤上,按兩下 [按鈕 ] 以將按鈕新增至表單。 使用滑鼠來定位並調整按鈕的大小。
在屬性視窗中設定下列按鈕屬性:
將 Text 屬性設定為 Say Hello 。
將 [名稱] 屬性設定為 btnProtected 。
將 Modifiers 屬性設定為 Protected 。 這可讓繼承自 Form1 的 表單修改 btnProtected 的屬性。
按兩下 Say Hello 按鈕以新增 Click 事件的事件處理常式 。
將下列這行程式碼加入至事件處理常式:
MessageBox.Show("Hello, World!")
MessageBox.Show("Hello, World!");
新增基底表單繼承者無法修改的按鈕
按一下程式碼編輯器上方的 Form1.vb [Design]、Form1.cs [Design]或 Form1.jsl [設計] 索引標籤,或按 F7,切換至設計檢視。
加入第二個按鈕,並設定其屬性,如下所示:
將 Text 屬性設定為 Say Goodbye 。
將 [名稱] 屬性設定為 btnPrivate 。
將 Modifiers 屬性設定為 Private 。 這使得繼承自 Form1 的 表單無法修改 btnPrivate 的屬性。
按兩下 [ Say Goodbye ] 按鈕,以新增 Click 事件的事件處理常式 。 將下列這行程式碼放在事件程序:
MessageBox.Show("Goodbye!")
MessageBox.Show("Goodbye!");
從 [ 建置] 功能表中,選擇 [建置 BaseForm 程式庫 ] 來建置類別庫。
一旦建立程式庫之後,您可建立新專案,其繼承自剛建立的表單。
建立專案,其中包含繼承自基底表單的表單
從 [ 檔案] 功能表中,選擇 [新增],然後選擇 [ 新增 專案 ] 以開啟 [ 新增專案 ] 對話方塊。
建立名為
InheritanceTest
的 Windows Forms 應用程式。
新增繼承的表單
在 方案總管 中,以滑鼠右鍵按一下 [繼承][測試 ] 專案,選取 [新增 ],然後選取 [ 新增專案 ]。
在 [ 新增專案 ] 對話方塊中,選取 [Windows Forms ] 類別 (如果您有類別清單),然後選取 [繼承的表單 ] 範本。
保留的預設名稱
Form2
,然後按一下 [ 新增 ]。在 [ 繼承選擇器] 對話方塊中,從 BaseFormLibrary 專案中選取 Form1 作為要繼承自的表單,然後按一下 [ 確定 ]。
這會在 InheritanceTest 專案中建立衍生自 BaseFormLibrary 表單的 表單。
如果尚未開啟,請按兩下設計工具中的繼承表單 ( Form2 )。
在設計工具中,繼承的按鈕在其右上角有符號 ( ),表示它們已繼承。
選取 [ Say Hello] 按鈕並觀察調整大小控點。 因為此按鈕已受到保護,所以繼承者可以移動它、調整大小、變更標題和進行其他修改。
選取私用 的 Say Goodbye 按鈕,並注意到它沒有調整大小控點。 此外,在 [ 屬性 ] 視窗中,此按鈕的屬性會呈現灰色,表示無法修改它們。
如果您使用 Visual C#:
在 方案總管 中,以滑鼠右鍵按一下 InheritanceTest 專案中的 Form1 ,然後選擇 [ 刪除 ]。 在出現的訊息方塊中,按一下 [ 確定 ] 以確認刪除。
開啟 Program.cs 檔案並變更
Application.Run(new Form1());
為Application.Run(new Form2());
。
在 [方案總管 ] 中 ,以滑鼠右鍵按一下 [繼承][測試 ] 專案,然後選取 [ 設定為啟始專案 ]。
在 方案總管 中,以滑鼠右鍵按一下 [繼承][測試 ] 專案,然後選取 [ 屬性 ]。
在 InheritTest 屬性頁中,將 Startup 物件 設定為繼承表單 ( Form2 )。
按 F5 執行應用程式,並觀察繼承表單的行為。
下一步
使用者控制項的繼承以非常類似的方式運作。 開啟一個新的類別庫專案,並加入使用者控制項。 將構成控制項放在上面,然後編譯專案。 開啟另一個新的類別庫專案,並加入已編譯類別程式庫的參考。 此外,請嘗試將繼承的控制項(透過 [新增專案 ] 對話方塊新增至專案,並使用 [繼承選擇器 ]。 新增使用者控制項,然後變更 Inherits
( :
在 Visual C#) 語句中。 如需詳細資訊,請參閱 如何:繼承 Windows Forms 。
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應