逐步解說:示範視覺化繼承

視覺化繼承可讓您查看基底表單上的控制項,並加入新的控制項。 在本逐步解說中,您將建立基底表單,並編譯為類別庫。 您將匯入此類別庫至另一個專案,並建立繼承自基底表單的新表單。 在這個逐步解說期間,您將了解如何:

  • 建立包含基底表單的類別庫專案。

  • 加入屬性可由基底表單衍生類別修改的按鈕。

  • 加入無法由基底表單繼承者修改的按鈕。

  • 建立包含繼承自 BaseForm 表單的專案。

最後,本逐步解說將示範繼承的表單上私用和受保護控制項之間的差異。

警告

並非所有控制項都支援來自基底表單的視覺化繼承。 下列控制項並不支援在此逐步解說中所描述的案例:

繼承的表單中的這些控制項永遠唯讀,不論您使用的修飾詞為何 (privateprotectedpublic)。

建立包含基底表單的類別庫專案

  1. 在 Visual Studio 的 [檔案 ] 功能表中,選擇 [ 新增 > 專案 ] 以開啟 [ 新增專案 ] 對話方塊。

  2. 建立名為 BaseFormLibrary 的 Windows Forms 應用程式。

  3. 若要建立類別庫,而不是標準 Windows Forms 應用程式,請在 方案總管 ,以滑鼠右鍵按一下 BaseFormLibrary 專案節點,然後選取 [ 屬性 ]。

  4. 在專案的屬性中,將 [輸出類型 ] 從 Windows 應用程式 變更為 [類別庫 ]。

  5. 從 [檔案] 功能表中,選擇 [ 全部 儲存] 將專案和檔案儲存到預設位置。

下面兩個程序將按鈕加入至基底表單。 為了示範視覺化繼承,您將藉由設定 Modifiers 屬性,授與這些按鈕不同存取層級。

新增基底表單繼承者可以修改的按鈕

  1. 在設計工具中,開啟 Form1

  2. 在 [工具箱 ] 的 [ 所有 Windows Forms] 索引標籤上,按兩下 [按鈕 ] 以將按鈕新增至表單。 使用滑鼠來定位並調整按鈕的大小。

  3. 在屬性視窗中設定下列按鈕屬性:

    • Text 屬性設定為 Say Hello

    • [名稱] 屬性設定為 btnProtected

    • Modifiers 屬性設定為 Protected 。 這可讓繼承自 Form1 表單修改 btnProtected 的屬性。

  4. 按兩下 Say Hello 按鈕以新增 Click 事件的事件處理常式

  5. 將下列這行程式碼加入至事件處理常式:

    MessageBox.Show("Hello, World!")
    
    MessageBox.Show("Hello, World!");
    

新增基底表單繼承者無法修改的按鈕

  1. 按一下程式碼編輯器上方的 Form1.vb [Design]、Form1.cs [Design]或 Form1.jsl [設計] 索引標籤,或按 F7,切換至設計檢視。

  2. 加入第二個按鈕,並設定其屬性,如下所示:

    • Text 屬性設定為 Say Goodbye

    • [名稱] 屬性設定為 btnPrivate

    • Modifiers 屬性設定為 Private 。 這使得繼承自 Form1 表單無法修改 btnPrivate 的屬性。

  3. 按兩下 [ Say Goodbye ] 按鈕,以新增 Click 事件的事件處理常式 。 將下列這行程式碼放在事件程序:

    MessageBox.Show("Goodbye!")
    
    MessageBox.Show("Goodbye!");
    
  4. 從 [ 建置] 功能表中,選擇 [建置 BaseForm 程式庫 ] 來建置類別庫。

    一旦建立程式庫之後,您可建立新專案,其繼承自剛建立的表單。

建立專案,其中包含繼承自基底表單的表單

  1. 從 [ 檔案] 功能表中,選擇 [新增],然後選擇 [ 新增 專案 ] 以開啟 [ 新增專案 ] 對話方塊。

  2. 建立名為 InheritanceTest 的 Windows Forms 應用程式。

新增繼承的表單

  1. 方案總管 中,以滑鼠右鍵按一下 [繼承][測試 ] 專案,選取 [新增 ],然後選取 [ 新增專案 ]。

  2. 在 [ 新增專案 ] 對話方塊中,選取 [Windows Forms ] 類別 (如果您有類別清單),然後選取 [繼承的表單 ] 範本。

  3. 保留的預設名稱 Form2 ,然後按一下 [ 新增 ]。

  4. 在 [ 繼承選擇器] 對話方塊中,從 BaseFormLibrary 專案中選取 Form1 作為要繼承自的表單,然後按一下 [ 確定 ]。

    這會在 InheritanceTest 專案中建立衍生自 BaseFormLibrary 表單的 表單。

  5. 如果尚未開啟,請按兩下設計工具中的繼承表單 ( Form2 )。

    在設計工具中,繼承的按鈕在其右上角有符號 ( Screenshot of the Visual Basic inheritance symbol. ),表示它們已繼承。

  6. 選取 [ Say Hello] 按鈕並觀察調整大小控點。 因為此按鈕已受到保護,所以繼承者可以移動它、調整大小、變更標題和進行其他修改。

  7. 選取私用 的 Say Goodbye 按鈕,並注意到它沒有調整大小控點。 此外,在 [ 屬性 ] 視窗中,此按鈕的屬性會呈現灰色,表示無法修改它們。

  8. 如果您使用 Visual C#:

    1. 方案總管 中,以滑鼠右鍵按一下 InheritanceTest 專案中的 Form1 ,然後選擇 [ 刪除 ]。 在出現的訊息方塊中,按一下 [ 確定 ] 以確認刪除。

    2. 開啟 Program.cs 檔案並變更 Application.Run(new Form1());Application.Run(new Form2());

  9. [方案總管 ] 中 ,以滑鼠右鍵按一下 [繼承][測試 ] 專案,然後選取 [ 設定為啟始專案 ]。

  10. 方案總管 中,以滑鼠右鍵按一下 [繼承][測試 ] 專案,然後選取 [ 屬性 ]。

  11. InheritTest 屬性頁中,將 Startup 物件 設定為繼承表單 ( Form2 )。

  12. F5 執行應用程式,並觀察繼承表單的行為。

下一步

使用者控制項的繼承以非常類似的方式運作。 開啟一個新的類別庫專案,並加入使用者控制項。 將構成控制項放在上面,然後編譯專案。 開啟另一個新的類別庫專案,並加入已編譯類別程式庫的參考。 此外,請嘗試將繼承的控制項(透過 [新增專案 ] 對話方塊新增至專案,並使用 [繼承選擇器 ]。 新增使用者控制項,然後變更 Inherits: 在 Visual C#) 語句中。 如需詳細資訊,請參閱 如何:繼承 Windows Forms

另請參閱