基於C#.Net 的MDI框架設計

1、引言
    MDI就是所謂的多文檔界面,他是微軟公司從Windows 2.0下的Microsoft Excel電子表格程序開始引入的,Excel電子表格用戶有時需要同時操作多份表格,MDI正好爲這種操作多表格提供了很大的方便,於是就產生了MDI程序。
    Visual C#是微軟公司推出的下一代主流程序開發語言,他也是一種功能十分強大的程序設計語言,正在受到越來越多的編程人員的喜歡。在Visual C#中,提供了爲實現MDI程序設計的很多功能。本文就是通過一個具體的例子來詳細的介紹在Visual C#中的MDI編程。 2、 程序設計及運行的環境
   (1)Windows 2000 Advanced Server    (2)Visual Studio .Net 2003 中文版
3、 程序設計的思路
   (1)MDI編程主要是生成框架主窗口
   (2)在主窗口中創建若干新的MDI子窗口
   (3)對主窗口中的MDI子窗口進行排列控制
   (4)將主窗口中已有的MDI子窗口自動添加到指定菜單項中
   (5)菜單項合併設置
4、程序設計及其實現
   (1)首先要將主窗體設定爲一個MDI窗體的容器,因爲只有如此才能夠在此主窗體上面添加MDI子窗體,從而實現對MDI編程,具體實現語句如下:
    this.IsMdiContainer = true ; //設置主窗體的IsMdiContainer屬性爲true,可設計時設置也可運行時設置。
   (2)在主窗體中新建一個MDI窗體。
     通常情況下,新建一個MDI子窗體的命令是通過觸發一個菜單的事件來實現的(比如,新建... ,打開...)。在處理新建一個MDI子窗體事件中,關鍵是要設定此MDI子窗體的父窗體。其實MDI窗體和別的窗體沒有什麼不同,不同點就在MDI窗體有上一級窗體,即父窗體,而其他窗體是沒有的,具體實現語句(單擊新建菜單項觸發的事件)如下:
private void New_Click ( object sender , EventArgs e )//這是一個菜單的事件 {
Form frmTemp = new Form ( ) ; //新建一個窗體對象,可根據需要新建自己設計的窗體
frmTemp.MdiParent = this ; //設置窗口的MdiParent屬性爲當前主窗口,成爲MDI子窗體
frmTemp.Text = "窗體0" + FormCount.ToString ( ) ; //設定MDI窗體的標題
FormCount++ ; //FormCount是定義在主程序中的一個變量來記錄產生的子窗口個數
frmTemp.Show ( ) ; //把此MDI窗體顯示出來
}   (3)對MDI子窗體的排列
    在主窗體中實現對MDI子窗體的排列操作,可以在主程序中通過主窗口的方法LayoutMdi來實現,他所帶的參數是由枚舉型MdiLayout所列舉的幾種排列類型,包括層疊Cascade 水平平鋪 TileHorizoatal 垂直平鋪 TileVertical 重新排列 ReArrange。
具體實現語句如下:
private void Cascade_Click ( object sender , EventArgs e ) // MDI窗體的層疊操作
{
   this.LayoutMdi ( MdiLayout.Cascade ) ;
}
private void TileH_Click ( object sender , EventArgs e ) // MDI窗體的水平平鋪操作
{
this.LayoutMdi ( MdiLayout.TileHorizontal ) ;
} private void TileV_Click ( object sender , EventArgs e ) // MDI窗體的垂直平鋪操作
{
this.LayoutMdi ( MdiLayout.TileVertical ) ;
}
private void ArrangeIcon_Click ( object sender , EventArgs e ) // MDI窗體排列圖標操作
{
this.LayoutMdi ( MdiLayout.ArrangeIcon ) ;
}
  (4)在菜單項中列出MDI子窗口的名稱。
    在有些MDI程序,當新建一個MDI窗體以後,往往會在某些菜單項的下面生產一個以此MDI窗體的名稱爲名稱的子菜單項。在Visual C#中實現此種功能,就顯得比較簡單的,只有在要加入的主菜單項下加入下面一句程序或者對設置該主菜單項的MdiList屬性就可以了:WindowMenu.MdiList = true ; 本程序中,是在"窗口"主菜單項下面加入MDI窗體的子菜單項的,主窗口內的子窗體在“窗口”菜單中被跟蹤。
   (5)子窗口菜單與主窗口菜單合併
    如果 MDI 子窗體有一個 MainMenu 組件(其菜單結構通常爲包含菜單項的菜單結構),並且該子窗體是在一個擁有 MainMenu 組件(其菜單結構通常爲包含菜單項的菜單結構)的 MDI 父窗體中打開的,那麼在設置了 MergeType 屬性(作爲可選項,還可以設置 MergeOrder 屬性)之後,這兩個菜單項會自動合併。
5. 總結本文主要是介紹如何用Visual C#來實現對MDI窗體的編程。即:新建MDI窗體、MDI窗體層疊、MDI窗體水平平鋪、MDI窗體的垂直平鋪。通過上述介紹,可見,在Visual C#中處理MDI還是相當比較簡單的

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章