MDI窗体

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MDI窗体相关的知识,希望对你有一定的参考价值。

1.设置父窗体

使用MDI窗体,需要先将父窗体的IsMdiContainer属性设置为True

技术分享

2.生成用于MDI子窗体的窗体

 1  frmTemp f1 = new frmTemp();
 2  f1.Text = "窗体1";
 3  f1.MdiParent = this;
 4  f1.Show();
 5 
 6  frmTemp f2 = new frmTemp();
 7  f2.Text = "窗体2";
 8  f2.MdiParent = this;
 9  f2.Show();
10 
11  frmTemp f3 = new frmTemp();
12  f3.Text = "窗体3";
13  f3.MdiParent = this;
14  f3.Show();

3.排列子窗体

层叠排列

1   LayoutMdi(MdiLayout.Cascade);

技术分享

水平平铺

1   LayoutMdi(MdiLayout.TileHorizontal);

技术分享

垂直排列

1   LayoutMdi(MdiLayout.TileVertical);

技术分享

 

***********************************分割线**********************************

4.对于MDI,常用的是在父窗体中加载MDI子窗体,并且经常会在子窗体之间切换,实现的效果如下

技术分享

1)创建两个不同的子窗体,并分别设置窗体的BackgroundImage,用于区分窗体

2)通过菜单栏的功能,选择对应的窗体

3)对于窗体,判断之前是否存在,进行不通的操作

代码如下:

 1    private void 企鹅ToolStripMenuItem_Click(object sender, EventArgs e)
 2    {
 3        //窗体没有创建或者窗体被释放
 4        if (f2 == null || f2.IsDisposed == true)
 5        {
 6            f2 = new frmTemp2();
 7            f2.FormBorderStyle = FormBorderStyle.None;
 8            f2.MdiParent = this;    //设置窗体的MDI父窗体
 9            f2.Parent = this.panel1;//设置控件的父容器
10            f2.Dock = DockStyle.Fill;
11            f2.Show();
12            if (f1 != null)
13                f1.SendToBack();
14        }
15        else
16        {
17            f2.Activate();//使窗体获得焦点
18            f2.BringToFront();
19        }
20    }

 

所有的示例程序链接如下:

http://download.csdn.net/detail/u010312811/9446887

 

以上是关于MDI窗体的主要内容,如果未能解决你的问题,请参考以下文章

MDI窗体容器--12月15日

delphi mdi子窗体显示和释放的问题

Delphi中实现MDI子窗体(转)

c# 怎么完全隐藏mdi子窗体的标题栏?

c# winform中mdi子窗体激活问题

如何实现MDI窗体不重复打开同一个子窗体?