[C# Winform] MDI 多重视窗操作-如何避免重复开启

在开发 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 父表单


<<:  MySQL 汇入 .sql 档案

>>:  Python & SQLALchemy 学习笔记_新增、修改以及删除资料

【Day2】谈谈何谓「单点故障」?

什麽是「单点故障」? 单点故障的英文是 (single point of failure,简称 SP...

30天Python自学:Day01

#以下内容皆由初学者撰写,有错误可能,不建议尽信 30天Python自学: Day01 Python...

[Day1] Android - Kotlin笔记: 序章与目录

序言 嗨大家好,我是小一。 由於昨天发文按成储存草稿,於是砍掉重练了QQ 第一次参加铁人赛;也是第一...

问责制,审计和审计追踪(Accountability, Auditing, and Audit Trail)

审核跟踪通常被视为侦查控件。查看审核跟踪可以发现或发现入侵或不合规的活动。 根据ISO 14641:...

D25 Pytest 学习纪录-pytest规则跟常用固件

pytest档案命名规则 python 档名为 test_*.py 或 *_test.py meth...