逐步解說:使用功能表合併和 ToolStrip 控制項建立 MDI 表單
System.Windows.Forms 命名空間支援多重文件介面 (MDI) 應用程式,而 MenuStrip 控制項則支援功能表合併。 MDI 表單也可以由 ToolStrip 控制項建立。
本逐步解說示範如何搭配 MDI 表單使用 ToolStripPanel 控制項。 這個表單也支援子功能表的功能表合併。 本逐步解說會說明下列工作:
建立 Windows Forms 專案。
建立表單的主功能表。 功能表的實際名稱會有所不同。
將 ToolStripPanel 控制項新增至 [工具箱]。
建立子表單。
依堆疊順序排列 ToolStripPanel 控制項。
當您完成時,您將有一個支援功能表合併和可移動 ToolStrip 控制項的 MDI 表單。
若要將本主題中的程式碼複製為單一清單,請參閱操作說明:使用功能表合併和 ToolStrip 控制項建立 MDI 表單。
必要條件
若要完成這個逐步解說,您將必須具有 Visual Studio。
建立專案
在 Visual Studio 中,建立名為 MdiForm 的 Windows 應用程式專案 ([檔案]>[新增]>[專案]>[Visual C#] 或 [Visual Basic]>[傳統型]>[Windows Forms 應用程式])。
在 Windows Form 設計工具中,選取表單。
在 [屬性] 視窗中,將 IsMdiContainer 的值設定為
true
。
建立主功能表
父 MDI 表單包含主功能表。 主功能表有一個名為 [視窗] 的功能表項目。 使用 [視窗] 功能表項目,您可以建立子表單。 子表單中的功能表項目會合併至主功能表。
從 [工具箱] 將 MenuStrip 控制項拖曳至表單上。
將 ToolStripMenuItem 新增至 MenuStrip 控制項,並將其命名為視窗。
選取 MenuStrip 控制項。
在 [屬性] 視窗中,將 MdiWindowListItem 屬性的值設定為
ToolStripMenuItem1
。將子項目新增至 [視窗] 功能表項目,然後將子項目命名為 [新增]。
在 [屬性] 視窗中,按一下 [事件]。
按兩下 Click 事件。
Windows Form 設計工具會產生 Click 事件的事件處理常式。
將下列程式碼插入至事件處理常式。
// This method creates a new ChildForm instance // and attaches it to the MDI parent form. private void newToolStripMenuItem_Click(object sender, EventArgs e) { ChildForm f = new ChildForm(); f.MdiParent = this; f.Text = "Form - " + this.MdiChildren.Length.ToString(); f.Show(); }
' This method creates a new ChildForm instance ' and attaches it to the MDI parent form. Private Sub newToolStripMenuItem_Click( _ ByVal sender As Object, _ ByVal e As EventArgs) _ Handles newToolStripMenuItem.Click Dim f As New ChildForm() f.MdiParent = Me f.Text = "Form - " + Me.MdiChildren.Length.ToString() f.Show() End Sub
將 ToolStripPanel 控制項新增至工具箱
當您搭配 MDI 表單使用 MenuStrip 控制項時,必須具有 ToolStripPanel 控制項。 您必須將 ToolStripPanel 控制項新增至 [工具箱],才能在 Windows Form 設計工具中建置 MDI 表單。
開啟 [工具箱],然後按一下 [所有 Windows Forms] 索引標籤,以顯示可用的 Windows Forms 控制項。
以滑鼠右鍵按一下以開啟快顯功能表,然後選取 [選擇項目]。
在 [選擇工具箱項目] 對話方塊中,向下捲動 [名稱] 資料行,直到您找到 ToolStripPanel 為止。
依 ToolStripPanel 選取核取方塊,然後按一下 [確定]。
ToolStripPanel 控制項會出現在 [工具箱] 中。
建立子表單
在此程序中,您將定義具有其本身 MenuStrip 控制項的個別子表單類別。 此表單的功能表項目會與父表單的功能表項目合併。
將名為
ChildForm
的新表單新增至專案。如需詳細資訊,請參閱操作說明:將 Windows Forms 新增至專案。
從 [工具箱],將 MenuStrip 控制項拖曳至表單上。
按一下 MenuStrip 控制項的設計工具動作影像 (小型黑色箭號),然後選取 [編輯項目]。
在 [項目集合編輯器] 對話方塊中,將名為 ChildMenuItem 的新 ToolStripMenuItem 新增至子功能表。
如需詳細資訊,請參閱 ToolStrip 項目集合編輯器。
測試表單
按 F5 編譯並執行您的表單。
按一下 [視窗] 功能表項目以開啟功能表,然後按一下 [新增]。
新的子表單會在表單的 MDI 用戶端區域中建立。 子表單的功能表會與主功能表合併。
關閉子表單。
子表單的功能表會從主功能表移除。
按一下 [新增] 幾次。
子表單會自動列在 [視窗] 功能表項目下,因為已指派 MenuStrip 控制項的 MdiWindowListItem 屬性。
新增 ToolStrip 支援
在此程序中,您會將四個 ToolStrip 控制項新增至 MDI 父表單。 每個 ToolStrip 控制項都會新增至 ToolStripPanel 控制項內,該控制項會固定在表單邊緣。
從 [工具箱] 將 MenuStrip 控制項拖曳至表單上。
選取 ToolStripPanel 控制項後,按兩下 [工具箱] 中的 ToolStrip 控制項。
ToolStrip 控制項會在 ToolStripPanel 控制項中建立。
選取 MenuStrip 控制項。
在 [屬性] 視窗中,將控制項的 Dock 屬性值變更為 Left。
ToolStripPanel 控制項會固定在表單左側的主功能表下方。 MDI 用戶端區域會重設大小以符合 ToolStripPanel 控制項。
重複步驟 1 到 4。
將新的 ToolStripPanel 控制項固定在表單頂端。
ToolStripPanel 控制項會固定在主功能表下方,但會在第一個 ToolStripPanel 控制項右邊。 此步驟說明正確置放 ToolStripPanel 控制項中堆疊順序的重要性。
針對另外兩個 ToolStripPanel 控制項重複步驟 1 到 4。
將新的 ToolStripPanel 控制項固定在表單的右邊和底部。
依堆疊順序排列 ToolStripPanel 控制項
固定的 ToolStripPanel 控制項在 MDI 表單上的位置取決於控制項在堆疊順序中的位置。 您可以在 [文件大綱] 視窗中輕鬆排列控制項的堆疊順序。
在 [檢視] 功能表中,按一下 [其他視窗],然後按一下 [文件大綱]。
上一個程序中 ToolStripPanel 控制項的排列方式為非標準。 這是因為堆疊順序不正確。 使用 [文件大綱] 視窗來變更控制項的堆疊順序。
在 [文件大綱] 視窗中,選取 [ToolStripPanel4]。
重複按一下向下鍵按鈕,直到 [ToolStripPanel4] 位於清單底部為止。
[ToolStripPanel4] 控制項會固定在表單底部,位於其他控制項底下。
選取 [ToolStripPanel2]。
按一下向下鍵按鈕一次,將控制項放在清單中的第三個位置。
[ToolStripPanel2] 控制項會固定在表單頂端、主功能表下方,以及其他控制項上方。
在 [文件大綱] 視窗中選取各種控制項,並將其移至堆疊順序中的不同位置。 請注意放置固定控制項時堆疊順序的效果。 使用 [編輯] 功能表上的 CTRL-Z 或 [復原] 來復原您的變更。
檢查點 - 測試表單
按 F5 編譯並執行您的表單。
按一下 ToolStrip 控制項的底框,並將控制項拖曳至表單上的不同位置。
您可以將 ToolStrip 控制項從一個 ToolStripPanel 控制項拖曳到另一個控制項。
下一步
在本逐步解說中,您已建立具有 ToolStrip 控制項和功能表合併的 MDI 父表單。 您可以針對許多其他用途使用控制項的 ToolStrip 系列:
使用 ContextMenuStrip 建立控制項的快顯功能表。 如需詳細資訊,請參閱 ContextMenu 元件概觀。
建立具有自動填入標準功能表的表單。 如需詳細資訊,請參閱逐步解說:提供標準功能表項目給表單。
為您的 ToolStrip 控制項提供專業外觀。 如需詳細資訊,請參閱操作說明:設定應用程式的 ToolStrip 轉譯器。