ITjob NET视频教程之c教材MDI应用程序_第1页
ITjob NET视频教程之c教材MDI应用程序_第2页
ITjob NET视频教程之c教材MDI应用程序_第3页
ITjob NET视频教程之c教材MDI应用程序_第4页
ITjob NET视频教程之c教材MDI应用程序_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第四章MDI应用程序 课程目标讨论SDI和MDI创立MDI应用程序创立菜单和菜单组件讨论ToolBar控件讨论状态栏一、SDI程序不能同时处理多个窗体要想同时处理多个窗体,需要翻开应用程序的多个副本比方:Form1aa=newForm1();aa.Show();二、MDI程序概述多文档界面(MDI)应用程序可以同时显示多个文档,每个文档显示在各自的窗口中MDI应用程序中常有包含子菜单的“窗口〞菜单项,用于在窗口或文档之间进行切换演示:一个带有open菜单的mdi窗口翻开一个带有exit菜单的sdi窗口,代码在备注中。注意:如果想在翻开的窗口之间进行切换,那么要填写主MDI窗口的主菜单的MdiWindowListItem。1、创立MDI父窗体要将窗体指定为子窗口的MDI容器只需将窗体的IsMDIContainer

属性设置为True建议将WindowState属性设置为Maximized,因为当父窗体最大化时操作MDI子窗口最为容易MDI父窗体的边缘将采用系统颜色2、创立MDI子窗体多文档界面(MDI)应用程序的根本元素是MDI子窗体,因为它们是用户交互的中心实例protectedvoidMDIChildNew_Click(objectsender,System.EventArgse){Form2newMDIChild=newForm2();//设置该窗体的父窗体

newMDIChild.MdiParent=this;//显示新建窗体

newMDIChild.Show();}3、确定活动的MDI子窗体ActiveMDIChild属性返回具有焦点的子窗体或返回最近活动的子窗体ActiveControl属性返回在活动的子窗体上有焦点的控件下面我们在上一个例子的子form窗口上增加一个richtext控件,备注中的代码演示了捕捉richtext控件中内容的过程4、排列MDI子窗体应用程序常包含对翻开的MDI子窗体进行操作的菜单命令,如“平铺〞、“层叠〞和“排列〞可以通过合并使用LayoutMDI方法和MDILayout枚举来重新排列MDI父窗体中的子窗体我们增加一组菜单如下: 排列方式(平铺,层叠,排列)备注中的代码演示了这个过程二、menuStrip和ToolStripMenuItemWindows窗体上的菜单是使用menuStrip对象创立的,该对象是一个ToolStripMenuItem对象集合可以在设计时向Windows窗体添加菜单,方法是添加menuStrip组件然后使用菜单设计器向其追加菜单项可以用编程方法添加菜单,方法是向Windows窗体添加一个或多个menuStrip对象并向该集合中添加ToolStripMenuItem对象1、删除菜单从菜单删除菜单项就是将该菜单项从相应的menuStrip对象的Items集合中删除如果此菜单项以后要再次使用,最好是隐藏该菜单项而不是删除它见备注中的代码2、合并菜单多文档界面(MDI)容器的菜单与其活动的MDI子窗体的菜单将自动合并,只要设置要合并的菜单的AllowMerge=true即可。可分别或一起设置ToolStripMenuItems上的MergeAction属性和MergeIndex属性,以确定菜单项在菜单合并中的存在和位置MergeAction属性确定在菜单合并过程中如何处理单个菜单项MergeIndex属性确定在新合并的菜单中每个ToolStripMenuItems的相对位置2.1、合并菜单的方式一、追加:MergeAction属性设置为Append即可二、插入:〔1〕主菜单的插入:MergeAction=insert,确定MergeIndex的值用来指示排放位置〔2〕相同主菜单的子菜单的插入:主菜单的MergeAction=MatchOnly,子菜单的MergeAction=insert确定子菜单的MergeIndex的值用来指示排放位置三、更新: 主菜单的MergeAction=MatchOnly,子菜单的MergeAction=replace四、删除: 主菜单的MergeAction=MatchOnly,子菜单的MergeAction=remove主菜单:ToolStripMenuItems子菜单:DropDownItems2.2、合并菜单补充说明一般一个MDI界面上只有一个菜单,我们想将子窗口上的菜单项隐藏,采取的步骤如下:〔1〕将菜单的modify属性修改为public〔2〕翻开子窗口时,使得窗口的菜单项的visible属性为false即可。三、ToolStrip控件简介ToolStrip控件通常沿其父窗口顶部“停靠〞,但是也可以将它停靠到窗口的任一边上,只要修改其dock属性即可。当用户将鼠标指针指向工具栏按钮时,工具栏可以显示工具提示,只要将ShowToolTips属性设置为true即可分隔符是toolStripSeparator对象我们常用的是toolStripButton,它是ToolStrip控件的子集。3.1、合并工具条的方式一、在show子窗口时要调用ToolStripManager.Merge(子窗口菜单,mdi窗口菜单);二、因为工具条没有子工具条的概念,所以合并工具条只是将toolstrip的各项按照append,insert,replace,remove设置即可三、其中replace,remove以相同的文字为准四、调用ToolStripManager.Merge之后,将toolstrip的visible属性设置为false;五、使用ToolStrip的合并也是不能自动复原的,要在子窗口的关闭事件中复原,代码为: MainFormaa=this.MdiParentasMainForm;ToolStripManager.RevertMerge(aa.toolStrip1);六、注意:一般使用上都是在激活子窗口时,进行工具条合并,而在窗口非激活时复原工具条。3.1、合并工具条的方式窗口加载时候合并工具条privatevoidfrmEditor_Load(objectsender,EventArgse){//获取父窗口对象f1=this.MdiParentasForm1; //ToolStripManager.Merge(子窗口工具条,mdi窗口工具条);ToolStripManager.Merge(this.toolStrip1,f1.toolStrip1);this.toolStrip1.Visible=false;}窗口激活状态合并工具条privatevoidfrmEditor_Activated(objectsender,EventArgse){ToolStripManager.Merge(this.toolStrip1,f1.toolStrip1);}窗口非激活状态时别离工具条privatevoidfrmEditor_Deactivate(objectsender,EventArgse){ //ToolStripManager.RevertMerge(mdi工具条);ToolStripManager.RevertMerge(f1.toolStrip1);}窗口关闭之前别离工具条privatevoidfrmEditor_FormClosing(objectsender,FormClosingEventArgse){ToolStripManager.RevertMerge(f1.toolStrip1);}四、StatusStrip控件简介StatusStrip控件用作窗体中的一块区域,通常显示在窗口的底部应用程序可在该区域中显示各种状态信息五、实现mdi中不重复翻开窗口privatevoidopenToolStripMenuItem_Click(objectsender,EventArgse){boolifexist=false;for(inti=0;i<this.MdiChildren.Length;i++){if(this.MdiChildren[i].Name.Equals("Form22")){this.MdiChildren[i].Activate();//子窗体已经被创立,激活它

ifexist=true;break;}}if(!ifexist){Form22aa=newForm22();aa.MdiParent=this;aa.Show();}}六、实例讲解

基于MDI的文本编辑器

之前我们用SDI的方式完整的编写了一个文本编辑器,现在我们要改造成一个MDI方式的程序。 改造的步骤如下:一、首先我们做一个MDI的窗口:在这个窗口中,我们制作菜单如下:&File&OpenCtrl+O-&Exit&Window&Title&Cascade&HelpContentIndexSearch-About这个是一个完整的MDI软件框架,第一列菜单的功能是翻开一个窗口和退出整个应用程序,第二列是对翻开的窗口进行排列,第三列往往我们会放置一些帮助信息,备注中是这个MDI窗口的全部代码。六、实例讲解

基于MDI的文本编辑器六、实例讲解

基于MDI的文本编辑器

我们做基于MDI应用的程序的时候,总是希望能使用一套菜单和工具条,这样就需要我们对每个菜单和工具条做一些合并功能,步骤如下:一、将原文本编辑器窗口的&File主菜单的mergeaction设置为matchonly,将里面的内容设置为insert,并分别调整mergeindex为2,3,4,5,6…二、将原文本编辑器窗口的Format主菜单的mergeaction设置为insert,并设置mergeindex为1。三、并且调用ToolStripManager.Merge(子窗口菜单,mdi窗口菜单);方法实现工具条的合并〔当然子窗口菜单的工具条要设置为public,这样才能够访问)。四、子窗口工具条的allowmerge属性也要设置为true.五、最后我们要将子窗口的菜单和工具条都要隐藏起来。完整的代码在备注中。六、实例讲解补充说明MDI文本编辑器请参考c#入门经典第3版356页总结Winforms支持的两种界面类型为:单文档界面多文档界面单文档界面(SDI)由单个文档或窗体,或者多个独立的窗体组成。多文档界面(MD

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论