[C# Winform] MDI 多重視窗操作-如何避免重複開啟

[C# Winform] MDI 多重視窗操作-如何避免重複開啟

在開發 WinForm 程式時,有一種常見的設計版面是多重視窗(MDI)。

所謂的多重視窗(MDI)就是在原本的視窗內,再開出新的視窗,也稱為子母視窗。

多重視窗是許多視窗程式會採用的版面配置,適合在大型的專案中會使用,例如 Visual Studio 也是使用多重視窗的配置。

csharp-winform-mdi-form-1

以下會示範如何建立基本的多重視窗,以及如何限制視窗只能開啟一次。

建立 MDI 父視窗

新增 MenuStrip 或 ToolStrip 工具列

在主要表單新增 MenuStrip 或是 ToolStrip。

csharp-winform-mdi-form-2

這兩種工具都適合放在主表單上面,當作開啟子表單的按鈕。
我所放的是 ToolStrip 工具列。

設定 IsMdiContainer 屬性

將主要表單的「IsMdiContainer」設為”True”。

設定啟動程式

將主要視窗設為主要啟動程式。
我的主要視窗名稱為 “FormMaster”。
開啟 Program.cs 修改主要啟動程式。




如何加入子視窗

首先新增一個子視窗,我命名為 “FormAccount”,在主視窗的 MenuStrip 或是 ToolStrip 增加按鈕。
點擊按鈕寫入以下程式碼。

測試一下。

MDI

如何避免視窗重複開啟

因為某些子視窗在畫面中沒有必要重複開啟,而剛剛的程式碼中若重複執行就會重複開啟。
所以我們要加上以下程式碼,在開啟之前檢查一下。

此段程式碼在開啟子視窗之前,會先檢查一遍所有的子視窗名稱是否存在,存在的話就會成為焦點,當不存在的時候才會加入子視窗。


重點整理

  1. 新增 MenuStrip 或 ToolStrip 工具列當作選單
  2. 設定 Form.IsMdiContainer 為 True
  3. 子視窗可重複開啟或者限制開啟一次

相關學習文章

官方教學說明

如果你在學習上有不懂的地方,需要諮詢服務,可以參考站長服務,我想辨法解決你的問題
如果文章內容有過時、不適用或錯誤的地方,幫我在下方留言通知我一下,謝謝

加入社團一起討論

關注我的 IG