当前位置:首页 > 全部子站 > 备课网 > 学院

Visual C#里面地MDI编制程序

来源:长理培训发布时间:2017-08-20 20:29:02

 多文档界面就是所谓的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 ( ) ; 
ExitM

 

[1] [2] 下一页  

 

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

 

上一页  [1] [2] 

责编:杨粟梅

发表评论(共0条评论)
请自觉遵守互联网相关政策法规,评论内容只代表网友观点,发表审核后显示!

国家电网校园招聘考试直播课程通关班

  • 讲师:刘萍萍 / 谢楠
  • 课时:160h
  • 价格 4580

特色双名师解密新课程高频考点,送国家电网教材讲义,助力一次通关

配套通关班送国网在线题库一套

课程专业名称
讲师
课时
查看课程

国家电网招聘考试录播视频课程

  • 讲师:崔莹莹 / 刘萍萍
  • 课时:180h
  • 价格 3580

特色解密新课程高频考点,免费学习,助力一次通关

配套全套国网视频课程免费学习

课程专业名称
讲师
课时
查看课程
在线题库
面授课程更多>>
图书商城更多>>
在线报名
  • 报考专业:
    *(必填)
  • 姓名:
    *(必填)
  • 手机号码:
    *(必填)
返回顶部