iT邦幫忙

0

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

Mars 2021-11-30 09:06:523899 瀏覽
  • 分享至 

  • xImage
  •  

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

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

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

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

建立 MDI 父視窗

新增 MenuStrip 或 ToolStrip 工具列

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

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

設定 IsMdiContainer 屬性

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

設定啟動程式

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

如何加入子視窗

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

FormAccount childForm = new FormAccount();
childForm.MdiParent = this;
childForm.Show();

測試一下。

如何避免視窗重複開啟

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

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();
}

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

重點整理

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

相關學習文章

[C# WinForm] 建立第一個應用程式 Hello World
微軟整合開發工具 Visual Studio 2022 安裝教學
如何在 Visual Studio 2019 建立 Windows Forms App 程式安裝檔

官方教學說明

建立 MDI 父表單


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言