域名频道-专业提供域名注册,网站空间,电子邮箱,VPS主机等服务
首页 域名注册 虚拟主机 香港主机 美国主机 VPS主机 网站建设 ShopEX网店 软件开发 客户中心 购物车
域名服务,域名注册 常见问题
文章搜索


本类TOP10
·松江网页设计_松江网页制...
·上海轨道交通图-上海地图
·松江公交线路图-松江地图
·marquee连续滚动
·今天几度?-天气预报-全...
·松江新城地图-松江地图
·松江城区地图-松江地图
·HAO123邮箱登陆代码
·shopex免费模板,下...
·松江DNS服务器地址,松...
当前位置:域名频道首页 > 常见问题 > 网页制作
C#中的MDI编程

多文档界面就是所谓的MDI,他是从W indows 2.0下的Microsoft Excel电子表 格程序开始引入的,这是因为Excel电子表格用户有时需要同时 操作多份表格,MDI正好为这种操作多表格提供了很大的方便,于 是就产生了MDI程序。在视窗系统3.1版本中,MDI得到了更 大范围的应用。其中系统中的程序管理器和文件管理器都是MDI程 序。
Visual C#是微软公司推出的下一代主流程序 开发语言,他也是一种功能十分强大的程序设计语言,正在受到越来 越多的编程人员的喜欢。在Visual C#中,提供了为实现M DI程序设计的很多功能。本文就是通过一个具体的例子来详细的介 绍在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_Cli ck ( object sender , EventArgs e )//这是一个菜单的事件
{
Form frmTemp = new Form ( ) ;

//新建一个窗体
frmTemp.MdiParent = this ;
< br> //定义此窗体的父窗体,从而此窗体成为一个 MDI窗体
frmTemp.Text = "窗体0" + FormCount.ToString ( ) ;

//设定MDI窗体的标题
FormCount++ ;

frm Temp.Show ( ) ;

//把此M DI窗体显示出来
}
( 3)实现对MDI窗体的层叠:
对于在主窗体 中实现对MDI窗体的层叠操作,在主程序中,是通过一个方法来实 现的,这个方法就是LayoutMdi,他所带的参数是MdiL ayout.Cascade,具体实现语句如下:
private void Cascade_Click ( object sender , EventArgs e )
// 实现对主窗体中的MDI窗体的层叠 操作
{
this.La youtMdi ( MdiLayout.Cascade ) ;

}

 


实现操作后具体如下图:

图 01:在主窗体中实现对MDI窗体的层叠操

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


private void TileH_Click ( object send er , EventArgs e )
// 实现对主窗体中的MDI窗体的水平平铺操作
{
this.LayoutMdi ( M diLayout.TileHorizontal ) ;

}

 


实现操作后具体如下图:

图02:在 主窗体中实现对MDI窗体的水平平铺操作

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


private voi d TileV_Click ( object sender , EventArgs e )
// 实现 对主窗体中的MDI窗体的垂直平铺操作
{< br> this.LayoutMdi ( MdiL ayout.TileVertical ) ;

}

 


实 现操作后具体如下图:

图03:在主窗体中实 现对MDI窗体的垂直平铺操作

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

图04:在 主窗体中实现在新建一个MDI窗体后会在此主菜单项下显示存在的 MDI窗体菜单项

三. 程序源代码(mdi.c s)及编译方法:
通过对程序设计中的难点介绍以后,就可 以比较容易得到实现对上述MDI窗体处理的源程序代码(mdi. cs),具体如下:
mdi.cs源程序代码:
< br>
using System ;

using System.Windows.Fo rms ;

using System.Co mponentModel ;

using System.Drawing ;

// 导 入在程序中用到的名称空间
class MD IDemo : Form
{
private static int FormCoun t = 1 ;

//定义此常量是为了统计M DI窗体数目,
MainMenu mnuM ain = new MainMenu ( ) ;

MenuItem FileMenu ;

MenuItem NewMenu ;

MenuItem ExitMenu ;

MenuItem WindowMenu ;


public MDIDemo ( )< br> {
this.IsMdi Container = true ;

th is.Text = "MDI演示程序" ;

FileMenu = new MenuItem ( ) ;

FileMenu.Text = "文件" ;

WindowMenu = new M enuItem ( ) ;

WindowM enu.Text = "窗口(&W)" ;

WindowMenu.MenuItems.Add ( "窗 体层叠(&C)" , new EventHandler ( Cascade_Click ) ) ;

W indowMenu.MenuItems.Add ( "水平平 铺(&H)" , new EventHandler ( Ti leH_Click ) ) ;

Windo wMenu.MenuItems.Add ( "垂直平铺(&V )" , new EventHandler ( TileV_ Click ) ) ;

WindowMen u.MdiList = true ;

// 这一句比较重要,有了这一句就可以实现在新建一个MDI窗体后会 在此主菜单项下显示存在的MDI窗体菜单项

NewMenu = new MenuIt em ( ) ;

NewMenu.Text = "新建窗体(&N)" ;

NewMe nu.Click += new EventHandler ( New_Click ) ;


ExitMenu = new MenuItem ( ) ;

ExitMenu.Text = " 退出(&X)" ;

ExitMenu.Cl ick += new EventHandler ( Exit _Click ) ;


FileMenu.MenuItems.Add ( NewMe nu ) ;

FileMenu.MenuI tems.Add ( new MenuItem ( "-" ) ) ;

FileMenu.MenuIt ems.Add ( ExitMenu ) ;


mnuMain.MenuItems. Add ( FileMenu ) ;

mn uMain.MenuItems.Add ( WindowMe nu ) ;


this .Menu = mnuMain ;

}
private void Cascade_Click ( object sender , EventArgs e )
// 实 现对主窗体中的MDI窗体的层叠操作
{ this.LayoutMdi ( MdiLa yout.Cascade ) ;

}

private void TileH_Click ( object sender , EventArgs e )
// 实现对主 窗体中的MDI窗体的水平平铺操作
{
this.LayoutMdi ( MdiLay out.TileHorizontal ) ;

}

private void TileV_Click ( object sen der , EventArgs e )
/ / 实现对主窗体中的MDI窗体的垂直平铺操作
{
this.LayoutMdi ( MdiLayout.TileVertical ) ;

}


private void New_Click ( object sender , EventArgs e )
{
Form frm Temp = new Form ( ) ;

//新建一个窗体
frmTemp.Mdi Parent = this ;

//定义此 窗体的父窗体,从而此窗体成为一个MDI窗体
frmTemp.Text = "窗体0" + FormCo unt.ToString ( ) ;

// 设定MDI窗体的标题
FormCount+ + ;

frmTemp.Show ( ) ;

//把此MDI窗体显示出来
}

priva te void Exit_Click ( object se nder , EventArgs e )
{
this.Dispose ( );
Application.Exit ( ) ;

}
public st atic void Main ( )
{< br> Application.Run ( new MDIDemo ( ) ) ;

}
}

 


再经过以下编译命令编译过以后,就可以得到执行程序:< br>csc /t:winexe /r:system.dll /r:system.windows.forms.dll / r:system.drawing.dll mdi.cs

四. 总结:
本文主要是介绍如何用Visua l C#来实现对MDI窗体的编程。即:新建MDI窗体、MDI 窗体层叠、MDI窗体水平平铺、MDI窗体的垂直平铺。通过上述 介绍,可见,在Visual C#中处理MDI还是相当比较简单 的

来自:域名频道 时间:2006-9-19 返回 常见问题 首页
关于我们 联系方式 付款事宜 招聘启事 网站地图 域名注册 虚拟主机 法律顾问

Copyright 2000-2013 域名频道(www.DNS110.com)
地址:上海市松江区新松江路1188弄37号 邮编:201620
电话:021-67820741 67820742 67820743 传真:转分机805 值班电话:021-67820743
QQ:219854 Email:support@dns110.com