创建MDI窗体、激活和排列子窗体

时间:2022-09-17 19:01:26

多文档应用程序中,有多个窗口打开时,在同一时间只有一个窗口是活动的,应用程序的活动窗口是所有操作的窗口,通常最上面的窗口是活动窗口。活动窗口的标题栏颜色和非活动窗口的颜色是不同的。

说明: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();

二、 激活窗体:

要得到当前活动的子窗体,使用ActiveMdiChild属性获取,示例代码如下:

MessageBox.Show(this.ActiveMdiChild.ToString());

在MDI应用程序中,可以使用以下代码激活窗体:

this.ActivateMdiChild(<子窗体>);
this.ActivateMdiChild(frmChild);

这句代码是将要激活的子窗体的名称传递给ActiveMdiChild()方法。如果设置了另外一个窗体为活动的子窗体,当前活动的窗体将自动取消激活。

注意: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方法,即可设定窗口的排列方式。

创建MDI窗体、激活和排列子窗体