基于C#.Net 的MDI框架设计
2005-10-24 16:25
399 查看
摘要:本文通过一个具体的例子来详细的介绍在Visual C#.Net环境下构建MDI框架的方法。多文档界面(Multi Document Interface MDI)是现在软件开发中常用的框架结构,C#.Net 是微软公司开发的新程序开发语言,本文讲述MDI窗口的属性设计以及MDI子窗口的创建和现实,同时给出菜单合并的设置方法。
关键字:C# .Net MDI 多文档界面
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还是相当比较简单的
关键字:C# .Net MDI 多文档界面
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还是相当比较简单的
相关文章推荐
- 基于C#.Net 的MDI框架设计
- Teddy's Knowledge Base--基于.Net 2.0 (C# 2.0, ASP.NET 2.0)的快速开发框架设计NBear V2.0.0 [开源]
- 基于.Net 2.0 (C# 2.0, ASP.NET 2.0)的快速开发框架设计NBear V1.8.1 [开源]
- AForge.NET是一个专门为开发者和研究者基于C#框架设计的视频录像
- 基于.Net 2.0 (C# 2.0, ASP.NET 2.0)的快速Web开发框架设计
- 基于.Net 2.0 (C# 2.0, ASP.NET 2.0)的快速开发框架设计NBear V3.3.9 Stable [开源]
- 基于.Net 2.0 (C# 2.0, ASP.NET 2.0)的快速开发框架设计NBear V3.3.9 Stable [开源]
- AForge.NET是一个专门为开发者和研究者基于C#框架设计的视频录像
- Aforge.net 一个专门为开发者和研究者基于C#框架设计
- Jquery如何序列化form表单数据为JSON对象 C# ADO.NET中设置Like模糊查询的参数 从客户端出现小于等于公式符号引发检测到有潜在危险的Request.Form 值 jquery调用iframe里面的方法 Js根据Ip地址自动判断是哪个城市 【我们一起写框架】MVVM的WPF框架(三)—数据控件 设计模式之简单工厂模式(C#语言描述)
- 基于.Net(C#开发)平台的三层框架架构软件的设计与实现
- Web Server 监视器 v1.0 --- 基于ASP.NET/C# 设计的小工具
- 基于.Net(C#开发)平台的三层框架架构软件的设计与实现
- 0/7 基于ASP.NET的Web应用程序框架Nello的设计与实现
- 精心设计的基于组件的C# Win Forms实践 一个框架数据库驱动多个业务逻辑数据库
- 【商业版、提供全部源码】基于RBAC的C#ASP.NET支持多用户的通用权限管理系统高质量源码10月份销售20套【提供操作手册设计文档下载】
- 精心设计的基于组件的C# Win Forms实践 一个框架数据库驱动多个业务逻辑数据库
- 基于C#.NET的网络蜘蛛设计计划
- 基于元数据配置的asp.net数据库应用快速开发框架设计及实现