基于C#.Net 的MDI框架设计

来源:互联网 发布:java 大数据 编辑:程序博客网 时间:2024/05/08 05:46

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还是相当比较简单的

原创粉丝点击