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

 

更新1:(因为程序修改不大,没有动之前上传的代码)

如何解决界面之间切换的闪烁问题:

修改两个MDI子界面的构造函数,如下:

1   this.SetStyle( 2       ControlStyles.AllPaintingInWmPaint |
3       ControlStyles.OptimizedDoubleBuffer, true); 4   this.UpdateStyles();

效果图如下:

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM