[C# Winform] MDI 多重視窗操作-如何避免重複開啟
在開發 WinForm 程式時,有一種常見的設計版面是多重視窗(MDI)。
所謂的多重視窗(MDI)就是在原本的視窗內,再開出新的視窗,也稱為子母視窗。
多重視窗是許多視窗程式會採用的版面配置,適合在大型的專案中會使用,例如 Visual Studio 也是使用多重視窗的配置。
以下會示範如何建立基本的多重視窗,以及如何限制視窗只能開啟一次。
Contents
建立 MDI 父視窗
新增 MenuStrip 或 ToolStrip 工具列
在主要表單新增 MenuStrip 或是 ToolStrip。
這兩種工具都適合放在主表單上面,當作開啟子表單的按鈕。
我所放的是 ToolStrip 工具列。
設定 IsMdiContainer 屬性
將主要表單的「IsMdiContainer」設為”True”。
設定啟動程式
將主要視窗設為主要啟動程式。
我的主要視窗名稱為 “FormMaster”。
開啟 Program.cs 修改主要啟動程式。
如何加入子視窗
首先新增一個子視窗,我命名為 “FormAccount”,在主視窗的 MenuStrip 或是 ToolStrip 增加按鈕。
點擊按鈕寫入以下程式碼。
1 2 3 |
FormAccount childForm = new FormAccount(); childForm.MdiParent = this; childForm.Show(); |
測試一下。
如何避免視窗重複開啟
因為某些子視窗在畫面中沒有必要重複開啟,而剛剛的程式碼中若重複執行就會重複開啟。
所以我們要加上以下程式碼,在開啟之前檢查一下。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
bool isFind = false; foreach (Form form in this.MdiChildren) { if (form.Name == "FormAccount") { isFind = true; form.MdiParent = this; form.Focus(); } } if (isFind == false) { FormAccount childForm = new FormAccount(); childForm.MdiParent = this; childForm.Show(); } |
此段程式碼在開啟子視窗之前,會先檢查一遍所有的子視窗名稱是否存在,存在的話就會成為焦點,當不存在的時候才會加入子視窗。
重點整理
- 新增 MenuStrip 或 ToolStrip 工具列當作選單
- 設定 Form.IsMdiContainer 為 True
- 子視窗可重複開啟或者限制開啟一次
相關學習文章
- [C# WinForm] 建立第一個應用程式 Hello World
- 微軟整合開發工具 Visual Studio 2022 安裝教學
- 如何在 Visual Studio 2019 建立 Windows Forms App 程式安裝檔
官方教學說明
如果你在學習上有不懂的地方,需要諮詢服務,可以參考站長服務,我想辨法解決你的問題
如果文章內容有過時、不適用或錯誤的地方,幫我在下方留言通知我一下,謝謝