文档界面
分类:
1、单文档界面应用程序(SDI)
特点:
1、应用程序中SDI的所有窗体都彼此独立
2、多文档界面应用程序(MDI)
特点:
1、每个应用程序中只能有一个MDI父窗体,在父窗体中可以打开多个MDI子窗体
2、任何MDI子窗体都只能在父窗体内部区域活动。
3、当关闭任何子窗体时,对其他打开的子窗体以及父窗体均没有任何影响。
4、当关闭父窗体时,将关闭所有打开的子窗体。
实现步骤:
1、设置MDI父窗体
设置窗体IsMdiContainer属性为true:则当前窗体为MDI父窗体
2、设置MDI子窗体代码如下
窗体名 对象名=new 窗体名();
对象名.MdiParent =this;
对象名.Show();
注意:MDI子窗体在弹窗出现时一定不能设置为模式弹窗
即:只能为Show弹窗
===================================================================================================================
一、MDI窗体设置和其子窗体设置
1、设置窗体的IsMdiContainer属性为true
2、设置MDI窗体的子窗体
子窗体1 子窗体=new 子窗体1();
子窗体.MdiParent=this;
子窗体.Show();
二、MDI窗体的子窗体排列
1、水平对齐:this.LayoutMdi(MdiLayout.TileHorizontal);
2、垂直平铺:this.LayoutMdi(MdiLayout.TileVertical);
3、层叠:this.LayoutMdi(MdiLayout.Cascade);
4、排列所以图表:this.LayoutMdi(MdiLayout.ArrangeIcons);
三、获取子窗体的数量
1、MessageBox.Show(this.MdiChildren.Length+"");
四、MDI窗体中窗口只允许打开一个
/// <summary>
/// 判断MDI子窗体是否存在 存在就显示
/// </summary>
/// <param name="formName">窗体名</param>
/// <returns></returns>
public bool IsSunFrmOpen(string formName)
{
// 子窗体是否已经打开了?(用循环来判断)
foreach (Form childrenForm in this.MdiChildren)
{
//检测是不是当前子窗体名称
if (childrenForm.Name == formName)
{
//是的话就是把他显示
childrenForm.Visible = true;
//恢复窗体的默认状态
childrenForm.WindowState = FormWindowState.Normal;
return true;
}
}
return false;
}
调用如下:
private void **_Click(object sender, EventArgs e)
{
//判断名字为Form1的子窗体是否存在 存在就显示 否则就创建
if (!IsSunFrmOpen("Form1"))
{
//不存在就创建窗体对象
Form1 f1 = new Form1();
f1.MdiParent = this;
f1.Show();
}
}