• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • Visual C#中的MDI編程

    發表于:2007-07-14來源:作者:點擊數: 標簽:
    Visual C#中的MDI編程:多文檔界面就是所謂的MDI,他是從 Windows 2.0下的Microsoft Excel電子表格程序開始引入的,這是因為Excel電子表格用戶有時需要同時操作多份表格,MDI正好為這種操作多表格提供了很大的方便,于是就產生了MDI程序。在視窗系統3.1版本
    Visual C#中的MDI編程:多文檔界面就是所謂的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 ) ;
    }


    (4)實現對MDI窗體的水平平鋪:

    要在主窗體實現MDI窗體水平平鋪,也是通過LayoutMdi方法,此時所帶的參數是MdiLayout.TileHorizontal,具體實現語句如下:

    private void TileH_Click ( object sender , EventArgs e )
    // 實現對主窗體中的MDI窗體的水平平鋪操作
    {
    this.LayoutMdi ( MdiLayout.TileHorizontal ) ;
    }


    (5)實現對MDI窗體的垂直平鋪:

    要在主窗體實現MDI窗體垂直平鋪,也是通過LayoutMdi方法,此時所帶的參數是MdiLayout.TileVertical,具體實現語句如下:

    private void TileV_Click ( object sender , EventArgs e )
    // 實現對主窗體中的MDI窗體的垂直平鋪操作
    {
    this.LayoutMdi ( MdiLayout.TileVertical ) ;
    }


    (6)在有些MDI程序,當新建一個MDI窗體以后,往往會在某些菜單項的下面生產一個以此MDI窗體的名稱為名稱的子菜單項。在其他語言中要實現這種功能,可能就要在某些主菜單項下動態的加入子菜單了。但是在Visual C#中實現此種功能,就顯得比較簡單的,只有在要加入的主菜單項下加入下面一句程序就可以了:
    WindowMenu.MdiList = true ; 本程序中,是在"窗口"主菜單項下面加入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還是相當比較簡單的。

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>