多文档应用程序中,有多个窗口打开时,在同一时间只有一个窗口是活动的,应用程序的活动窗口是所有操作的窗口,通常最上面的窗口是活动窗口。活动窗口的标题栏颜色和非活动窗口的颜色是不同的。
说明:MDI程序主窗体的标题栏颜色和活动的子窗口的标题栏颜色相同。
注意:如果窗体为 MDI 父窗体,则在触发 MDI 父窗体的 Closing 事件之前,将触发所有 MDI 子窗体的 Closing 事件。另外,在触发 MDI 父窗体的 Closed 事件之前,将触发所有 MDI 子窗体的 Closed 事件
一、 创建MDI窗体
Ø 将 IsMdiContainer 属性设置为 True
Ø 选择“项目”→“添加 Windows 窗体”
Ø 选择“项目”→“添加 Windows 窗体”
Ø 添加给定的代码,将其他窗体设置为子窗体。下面代码演示如何将TestForm设置为当前窗体的子窗体。
TestForm objChild = new TestForm();
objChild.MdiParent = this;
objChild.Show();
二、 xx窗体:
要得到当前活动的子窗体,使用ActiveMdiChild属性获取,示例代码如下:
MessageBox.Show(this.ActiveMdiChild.ToString());
在MDI应用程序中,可以使用以下代码xx窗体:
this.ActivateMdiChild(<子窗体>);
this.ActivateMdiChild(frmChild);
这句代码是将要xx的子窗体的名称传递给ActiveMdiChild()方法。如果设置了另外一个窗体为活动的子窗体,当前活动的窗体将自动取消xx。
注意:ActiveMdiChild和ActivateMdiChild()的不同,前者是属性,后者是方法。
三、排列子窗体
MDI应用程序打开多个子窗体时,需要合理安排子窗体的排列方式,要排列WinForms中的子窗口,需要调用Form类的LayoutMdi方法来使用MdiLayout枚举成员,该枚举指定了MDI子窗口在MDI父窗口中的布局。
MdiLayout枚举的成员列表如下:
Ø ArrangeIcons :在 MDI 父窗体的客户端区内排列所有 MDI 子窗体的图标
Ø Cascade:在 MDI 父窗体的客户端区内层叠所有 MDI 子窗口
Ø TileHorizontal :在 MDI 父窗体的客户端区内水平平铺所有 MDI 子窗口
Ø TileVertical:在 MDI 父窗体的客户端区内垂直平铺所有 MDI 子窗口
设定子窗口排列方式的代码如下:
this.LayoutMdi(MdiLayout.TileHorizontal);
将MdiLayout枚举成员的名称传递给LayoutMdi方法,即可设定窗口的排列方式。