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