1.设置父窗体
使用MDI窗体,需要先将父窗体的IsMdiContainer属性设置为True
2.生成用于MDI子窗体的窗体
1 frmTemp f1 = new frmTemp();
f1.Text = "窗体1";
f1.MdiParent = this;
f1.Show(); frmTemp f2 = new frmTemp();
f2.Text = "窗体2";
8 f2.MdiParent = this;
f2.Show(); 11 frmTemp f3 = new frmTemp();
12 f3.Text = "窗体3";
f3.MdiParent = this;
14 f3.Show();
3.排列子窗体
层叠排列
LayoutMdi(MdiLayout.Cascade);
水平平铺
1 LayoutMdi(MdiLayout.TileHorizontal);
垂直排列
LayoutMdi(MdiLayout.TileVertical);
***********************************分割线**********************************
4.对于MDI,常用的是在父窗体中加载MDI子窗体,并且经常会在子窗体之间切换,实现的效果如下
1)创建两个不同的子窗体,并分别设置窗体的BackgroundImage,用于区分窗体
2)通过菜单栏的功能,选择对应的窗体
3)对于窗体,判断之前是否存在,进行不通的操作
代码如下:
private void 企鹅ToolStripMenuItem_Click(object sender, EventArgs e)
{
//窗体没有创建或者窗体被释放
if (f2 == null || f2.IsDisposed == true)
{
f2 = new frmTemp2();
f2.FormBorderStyle = FormBorderStyle.None;
f2.MdiParent = this; //设置窗体的MDI父窗体
f2.Parent = this.panel1;//设置控件的父容器
f2.Dock = DockStyle.Fill;
f2.Show();
if (f1 != null)
f1.SendToBack();
}
else
{
f2.Activate();//使窗体获得焦点
f2.BringToFront();
}
}
所有的示例程序链接如下:
http://download.csdn.net/detail/u010312811/9446887
更新1:(因为程序修改不大,没有动之前上传的代码)
如何解决界面之间切换的闪烁问题:
修改两个MDI子界面的构造函数,如下:
this.SetStyle(
ControlStyles.AllPaintingInWmPaint |
ControlStyles.OptimizedDoubleBuffer, true);
this.UpdateStyles();
效果图如下: