C# 中的MDI編程

來源:互聯網
上載者:User

多重文件介面就是所謂的MDI,他是從Windows 2.0下的Microsoft Excel試算表程式開始引入的,這是因為Excel試算表使用者有時需要同時操作多份表格,MDI正好為這種操作多表格提供了很大的方便,於是就產生了MDI程式。在視窗系統3.1版本中,MDI得到了更大範圍的應用。其中系統中的程式管理器和檔案管理工具都是MDI程式。
Visual C#是微軟公司推出的下一代主流程式開發語言,他也是一種功能十分強大的程式設計語言,正在受到越來越多的編程人員的喜歡。在Visual C#中,提供了為實現MDI程式設計的很多功能。本文就是通過一個具體的例子來詳細的介紹在Visual C#中的MDI編程。

一 程式設計及啟動並執行環境:
(1)視窗2000伺服器版
(2).Net FrameWork SDK Beta 2版

二 程式設計的思路、主要步驟和實現方法:
MDI編程主要就是要在主表單中能夠建立一個MDI表單,並且能夠對主表單中的所有MDI表單實現層疊、水平平鋪和垂直平鋪。雖然這些操作比較基本,但卻是程式設計中的要點和重點。本文就按照上述功能的順序來一一介紹。
(1)首先要設定主表單是一個MDI表單的容器,因為只有如此才能夠在此主表單上面添加MDI表單,從而實現對MDI編程,具體實現語句如下:
this.IsMdiContainer = true ;

(2)在主表單上面建立一個MDI表單。在程式中,建立一個MDI表單的命令是通過一個菜單的事件來實現的。在處理建立一個MDI表單事件中,關鍵是要設定此MDI表單的父表單。其實MDI表單和別的表單沒有什麼不同,不同點就在MDI表單有上一級表單,即父表單,而其他表單是沒有的,具體實現語句如下:
private void New_Click ( object sender , EventArgs e )//這是一個菜單的事件
{
Form frmTemp = new Form ( ) ;
//建立一個表單
frmTemp.MdiParent = this ;
//定義此表單的父表單,從而此表單成為一個MDI表單
frmTemp.Text = "表單0" + FormCount.ToString ( ) ;
//設定MDI表單的標題
FormCount++ ;
frmTemp.Show ( ) ;
//把此MDI表單顯示出來
}
(3)實現對MDI表單的層疊:
對於在主表單中實現對MDI表單的層疊操作,在主程式中,是通過一個方法來實現的,這個方法就是LayoutMdi,他所帶的參數是MdiLayout.Cascade,具體實現語句如下:
private void Cascade_Click ( object sender , EventArgs e )
// 實現對主表單中的MDI表單的層疊操作
{
this.LayoutMdi ( MdiLayout.Cascade ) ;
}

實現操作後具體如:

圖01:在主表單中實現對MDI表單的層疊操作,點擊小圖放大

(4)實現對MDI表單的水平平鋪:
要在主表單實現MDI表單水平平鋪,也是通過LayoutMdi方法,此時所帶的參數是MdiLayout.TileHorizontal,具體實現語句如下:
private void TileH_Click ( object sender , EventArgs e )
// 實現對主表單中的MDI表單的水平平鋪操作
{
this.LayoutMdi ( MdiLayout.TileHorizontal ) ;
}

實現操作後具體如:

圖02:在主表單中實現對MDI表單的水平平鋪操作,點擊小圖放大

(5)實現對MDI表單的垂直平鋪:
要在主表單實現MDI表單垂直平鋪,也是通過LayoutMdi方法,此時所帶的參數是MdiLayout.TileVertical,具體實現語句如下:
private void TileV_Click ( object sender , EventArgs e )
// 實現對主表單中的MDI表單的垂直平鋪操作
{
this.LayoutMdi ( MdiLayout.TileVertical ) ;
}

實現操作後具體如:

圖03:在主表單中實現對MDI表單的垂直平鋪操作,點擊小圖放大

(6)在有些MDI程式,當建立一個MDI表單以後,往往會在某些功能表項目的下面生產一個以此MDI表單的名稱為名稱的子功能表項。在其他語言中要實現這種功能,可能就要在某些主功能表項目下動態加入子功能表了。但是在Visual C#中實現此種功能,就顯得比較簡單的,只有在要加入的主功能表項目下加入下面一句程式就可以了:
WindowMenu.MdiList = true ; 本程式中,是在"視窗"主功能表項目下面加入MDI表單的子功能表項的。加入此語句後,程式運行介面具體如:

圖04:在主表單中實現在建立一個MDI表單後會在此主功能表項目下顯示存在的MDI表單功能表項目
點擊小圖放大

三. 程式原始碼(mdi.cs)及編譯方法:
通過對程式設計中的痛點介紹以後,就可以比較容易得到實現對上述MDI表單處理的來源程式代碼(mdi.cs),具體如下:
mdi.cs來源程式代碼:
using System ;
using System.Windows.Forms ;
using System.ComponentModel ;
using System.Drawing ;
// 匯入在程式中用到的名稱空間
class MDIDemo : Form
{
private static int FormCount = 1 ;
//定義此常量是為了統計MDI表單數目,
MainMenu mnuMain = new MainMenu ( ) ;
MenuItem FileMenu ;
MenuItem NewMenu ;
MenuItem ExitMenu ;
MenuItem WindowMenu ;

public MDIDemo ( )
{
this.IsMdiContainer = true ;
this.Text = "MDI示範程式" ;
FileMenu = new MenuItem ( ) ;
FileMenu.Text = "檔案" ;
WindowMenu = new MenuItem ( ) ;
WindowMenu.Text = "視窗(&W)" ;
WindowMenu.MenuItems.Add ( "表單層疊(&C)" , new EventHandler ( Cascade_Click ) ) ;
WindowMenu.MenuItems.Add ( "水平平鋪(&H)" , new EventHandler ( TileH_Click ) ) ;
WindowMenu.MenuItems.Add ( "垂直平鋪(&V)" , new EventHandler ( TileV_Click ) ) ;
WindowMenu.MdiList = true ;
//這一句比較重要,有了這一句就可以實現在建立一個MDI表單後會在此主功能表項目下顯示存在的MDI表單功能表項目

NewMenu = new MenuItem ( ) ;
NewMenu.Text = "建立表單(&N)" ;
NewMenu.Click += new EventHandler ( New_Click ) ;

ExitMenu = new MenuItem ( ) ;
ExitMenu.Text = "退出(&X)" ;
ExitMenu.Click += new EventHandler ( Exit_Click ) ;

FileMenu.MenuItems.Add ( NewMenu ) ;
FileMenu.MenuItems.Add ( new MenuItem ( "-" ) ) ;
FileMenu.MenuItems.Add ( ExitMenu ) ;

mnuMain.MenuItems.Add ( FileMenu ) ;
mnuMain.MenuItems.Add ( WindowMenu ) ;

this.Menu = mnuMain ;
}

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 New_Click ( object sender , EventArgs e )
{
Form frmTemp = new Form ( ) ;
//建立一個表單
frmTemp.MdiParent = this ;
//定義此表單的父表單,從而此表單成為一個MDI表單
frmTemp.Text = "表單0" + FormCount.ToString ( ) ;
//設定MDI表單的標題
FormCount++ ;
frmTemp.Show ( ) ;
//把此MDI表單顯示出來
}

private void Exit_Click ( object sender , EventArgs e )
{
this.Dispose ( );
Application.Exit ( ) ;
}
public static void Main ( )
{
Application.Run ( new MDIDemo ( ) ) ;
}
}

再經過以下編譯命令編譯過以後,就可以得到執行程式:
csc /t:winexe /r:system.dll /r:system.windows.forms.dll /r:system.drawing.dll mdi.cs

四. 總結:
本文主要是介紹如何用Visual C#來實現對MDI表單的編程。即:建立MDI表單、MDI表單層疊、MDI表單水平平鋪、MDI表單的垂直平鋪。通過上述介紹,可見,在Visual C#中處理MDI還是相當比較簡單的。

 

 

 

[ 作者: 王天   添加時間: 2001-11-23 14:55:25 ]來源:www.ccidnet.com

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.