MDI是指将多控件窗体在同一窗体中打开,可以设置重叠打开,平捕打开等,MDI窗体(Multiple-Document Interface,多文档界面)用于同时显示多个文档。在项目中使用MDI窗体时,通常将一个MDI窗口窗体作为父窗体,父窗体可以将多个子窗体包容在它的工作区之中。
一、基本设置
1.1 设置:属性中IsMDIContainer:true;
当然,也可以在程序设定
private void frmMain_Load(object sender, EventArgs e)
{
this.IsMdiContainer = true;
}
1.2 子级窗体在MDI中打开,需先设置位于MDI窗体中
Form1 f3 = new Form1();
f3.MdiParent = this;
f3.Show();
1.3 窗口打开最大化
f3.WindowState=FormwindowState.Maximized
二、实例化测试
2.1 新建一个主窗口,命名为 主窗口,并将IsMdiContainer设为True
2.2 再新建2个子窗口,分别命名为Child1,Child2
2.3 将Child1和Child2加载到主窗口中,代码如下:
namespace MDI容器学习1
{
public partial class frmMain : Form
{
public frmMain()
{
InitializeComponent();
}
private void frmMain_Load(object sender, EventArgs e)
{
Child1 child1 = new Child1();
child1.MdiParent = this;
child1.Show();
Child2 child2 = new Child2();
child2.MdiParent = this;
child2.Show();
}
}
}
三、通过菜单来生成新窗口
3.1 在刚才的主窗口,新建安菜单
在工具箱中选择MenuStrip控件,此时就会在窗体中出现一排菜单栏,并依次输入“新建窗体”、“层叠排列”、“水平平铺”、“垂直平铺”、“关闭”。
3.2 下面通过双击菜单项,进行添加窗口,具体代码如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace MDI容器学习1
{
public partial class frmMain : Form
{
public frmMain()
{
InitializeComponent();
}
private void frmMain_Load(object sender, EventArgs e)
{
Child1 child1 = new Child1();
child1.MdiParent = this;
child1.Show();
Child2 child2 = new Child2();
child2.MdiParent = this;
child2.Show();
}
private void 新建窗体ToolStripMenuItem_Click(object sender, EventArgs e)
{
Child1 NewChild3 = new Child1();
NewChild3.MdiParent = this;
NewChild3.Show();
}
private void 层叠排列ToolStripMenuItem_Click(object sender, EventArgs e)
{
LayoutMdi(MdiLayout.Cascade);
}
private void 水平平铺ToolStripMenuItem_Click(object sender, EventArgs e)
{
LayoutMdi(MdiLayout.TileHorizontal);
}
private void 垂直平铺ToolStripMenuItem_Click(object sender, EventArgs e)
{
LayoutMdi(MdiLayout.TileVertical);
}
private void 关闭ToolStripMenuItem_Click(object sender, EventArgs e)
{
Close();
}
}
}
3.3 MDI窗体排列
排列MDI窗体
public void LayoutMdi(MdiLayout value)
value是MdiLayout的枚举值之一,用来定义MDI子窗体的布局。
Cascade | 层叠排列MDI子窗体 |
TileHorizontal | 水平平铺MDI子窗体 |
TileVertical | 垂直平铺MDI子窗体 |