什么是窗体容器MDI
效果和容器TabelControl差不多,区别就是一个是用来存放控件,一个来存放Form窗体
MDI应用
(1)如何把一个窗体变成MDI窗体
选中窗体,在窗口样式属性中,有一个属性样式叫做IsMdiContainer,选中True就把该窗体变成了一个MDI窗体
(2)把窗体放进去
//设置只能打开唯一集合,用来存放记录打开的Form
List<Form> AllForm = new List<Form>();
private void 打开111ToolStripMenuItem_Click(object sender, EventArgs e)
{
//定义要打开的Form2是不存在的
bool hasf2 = false;
//实例化要打开的Form2
Form2 f2 = new Form2();
//遍历集合,看是否存在Form2
foreach (Form f in AllForm)
{
//如果存在From2类型的窗体
if (f is Form2)
{
//证明Form2已经打开了
hasf2 = true;
//把f转换成f2
f2 = f as Form2;
}
}
//如果不存在Form2
if (!hasf2)
{
//打开的时候最大化
f2.WindowState = FormWindowState.Maximized;
//设置f2的所在的MDI窗体是Form1
f2.MdiParent = this;
//设置f2所在的父级,避免在菜单栏中存在关闭按钮
f2.Parent = panel1;
//打开Form2
f2.Show();
//把f2添加到集合中
AllForm.Add(f2);
}
//如果存在Form2
else
{
//遍历集合,把所有Form都隐藏
foreach (Form ff in AllForm)
{
ff.Hide();
}
//只打开f2
f2.Show();
}
}
这里有注意事项:
(1)Form2 要设置属性为无边框,这样就不会存在关闭按钮了.
(2)用MDI制作安装程序步骤的时候,先让MDI打开自身的一个Panel1,上面放一个Button,点击按钮后,Button隐藏,然后在打开MDI内的其它窗体,避免闪屏情况出现.
原文:http://www.cnblogs.com/weiyu11/p/6818876.html