使用MDI窗体实现多窗口效果

时间:2021-09-01 05:43:16

C#MDI窗体实现多窗口效果  
Visual C#是微软公司推出的下一代主流程序开发语言,他也是一种功能十分强大的程
序设计语言,正在受到越来越多的编程人员的喜欢。在Visual C#中,提供了为实现MDI程序设计的很多功能。本文就是通过一个具体的例子来详细的介绍在Visual C#中的MDI编程。   
  一程序设计及运行的环境:
  (1)视窗2000服务器版
  (2).Net FrameWork SDK Beta 2版
  二程序设计的思路、主要步骤和实现方法:
  MDI编程主要就是要在主窗体中能够新建一个MDI窗体,并且能够对主窗体中的所有MDI窗体实现层叠、水平平铺和垂直平铺。虽然这些操作比较基本,但却是程序设计中的要点和重点。本文就按照上述功能的顺序来一一介绍。
  (1)首先要设定主窗体是一个MDI窗体的容器,因为只有如此才能够在此主窗体上面添加MDI窗体,从而实现对MDI编程,具体实现语句如下:
  

public Form1() { InitializeComponent(); this.IsMdiContainer = true; }

我是直接把this.IsMdiContainer = true ;写在窗体的构造函数中,你也可以写的form_load函数中。


  (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 ) ; }


实现操作后具体如下图:

使用MDI窗体实现多窗口效果


图01:在主窗体中实现对MDI窗体的层叠操作,点击小图放大


  (4)实现对MDI窗体的水平平铺:
  要在主窗体实现MDI窗体水平平铺,也是通过LayoutMdi方法,此时所带的参数是MdiLayout.TileHorizontal,具体实现语句如下:

this.LayoutMdi ( MdiLayout.TileHorizontal ) ;

 

实现操作后具体如下图:

使用MDI窗体实现多窗口效果


图02:在主窗体中实现对MDI窗体的水平平铺操作,点击小图放大


  (5)实现对MDI窗体的垂直平铺:
  要在主窗体实现MDI窗体垂直平铺,也是通过LayoutMdi方法,此时所带的参数是MdiLayout.TileVertical,具体实现语句如下:

this.LayoutMdi ( MdiLayout.TileVertical ) ;//实现对主窗体中的MDI窗体的垂直平铺操作

 

实现操作后具体如下图:

使用MDI窗体实现多窗口效果

图03:在主窗体中实现对MDI窗体的垂直平铺操作,点击小图放大


  (6)在有些MDI程序,当新建一个MDI窗体以后,,往往会在某些菜单项的下面生产一个以此MDI窗体的名称为名称的子菜单项。在其他语言中要实现这种功能,可能就要在某些主菜单项下动态的加入子菜单了。但是在Visual C#中实现此种功能,就显得比较简单的,只有在要加入的主菜单项下加入下面一句程序就可以了:
  WindowMenu.MdiList = true ;本程序中,是在"窗口"主菜单项下面加入MDI窗体的子菜单项的。加入此语句后,程序运行界面具体如下图:

使用MDI窗体实现多窗口效果