1、广东农工商职业技术学院广东农工商职业技术学院VB.NET程序设计程序设计任务五任务五 建立建立MDI窗体完善系统界面窗体完善系统界面 本章学习目标:本章学习目标:掌握菜单的设计与应用掌握菜单的设计与应用 掌握工具栏和状态栏的基本设计方法掌握工具栏和状态栏的基本设计方法 掌握掌握MDI多文档界面程序的设计多文档界面程序的设计目标目标 如果要操作复杂的多任务应用程序界面如果要操作复杂的多任务应用程序界面,VB.NET提供一些非常方便的操作界面提供一些非常方便的操作界面,使得系统更美观、使得系统更美观、实用和方便实用和方便如:如:设置带菜单栏、工具栏和状态栏的窗体设置带菜单栏、工具栏和状态栏的窗体
2、可以进行多窗体操作可以进行多窗体操作问题的引入问题的引入 任务:任务:为应用程序增加菜单栏、工具栏、状态栏。并建立MDI窗体任务任务工具栏工具栏菜单栏菜单栏状态栏状态栏MDI窗体窗体 菜单是一种方便用户选择应用程序功能的入口菜单是一种方便用户选择应用程序功能的入口,菜单可分为菜单可分为:菜单栏菜单菜单栏菜单,也称为主菜单或下拉菜单也称为主菜单或下拉菜单 弹出式菜单弹出式菜单,也称为快捷菜单也称为快捷菜单创建菜单的相关知识创建菜单的相关知识使用窗体的主菜单使用窗体的主菜单菜单应该遵循以下几点基本原则菜单应该遵循以下几点基本原则 菜单要合理分类。菜单要合理分类。菜单文字要具有可读性。菜单文字要具有
3、可读性。要兼顾用户的行为习惯。要兼顾用户的行为习惯。创建一个菜单栏菜单创建一个菜单栏菜单要创建菜单栏菜单要创建菜单栏菜单,首先要在窗体上添加首先要在窗体上添加MenuStrip 控件,然后在控件,然后在MenuStrip控件中定义控件中定义菜单项菜单项(MenuItem),最后编写菜单项的单击事,最后编写菜单项的单击事件响应代码件响应代码 菜单通过存放按照一般主题分组的命令将功能公开给菜单通过存放按照一般主题分组的命令将功能公开给用户。用户。MenuStrip 控件是此版本的控件是此版本的 Visual Studio 和和.NET Framework 中的新功能。使用该控件,可以轻松创建中的新
4、功能。使用该控件,可以轻松创建 Microsoft Office 中那样的菜单。中那样的菜单。MenuStrip 控件支持多文档界面控件支持多文档界面(MDI)和菜单合并、工和菜单合并、工具提示和溢出。您可以通过添加访问键、快捷键、选中标具提示和溢出。您可以通过添加访问键、快捷键、选中标记、图像和分隔条,来增强菜单的可用性和可读性。记、图像和分隔条,来增强菜单的可用性和可读性。MenuStrip 控件取代了控件取代了 MainMenu 控件并向其中添加了控件并向其中添加了功能;但是也可选择保留功能;但是也可选择保留 MainMenu 控件以备向后兼容和控件以备向后兼容和将来使用。将来使用。准备
5、好要用的图准备好要用的图菜单项最常用的属性菜单项最常用的属性菜单项最常用的属性菜单项最常用的属性:Text:用来指示菜单项的标题:用来指示菜单项的标题.还可以通过在还可以通过在要用作访问键的字符前放置一个要用作访问键的字符前放置一个”&”来指定来指定访问键访问键.或在其中输入或在其中输入”-”来创建菜单项为分来创建菜单项为分割线割线Checked:设置菜单项是否被选中,:设置菜单项是否被选中,True为选为选中中,False为未选中为未选中Name:设置菜单项的名字:设置菜单项的名字ShortcutKeys:指定可由菜单项的快捷键:指定可由菜单项的快捷键Enabled:指定菜单项是否可用:指定
6、菜单项是否可用Visible:指定菜单项是否可见:指定菜单项是否可见Image:为菜单项添加图标为菜单项添加图标快捷菜单(右键菜单)的使用快捷菜单(右键菜单)的使用添加添加“ContextMenuStrip”控件控件属性设置与主菜单一样属性设置与主菜单一样设置某对象(控件)与该快捷菜单关联:设置某对象(控件)与该快捷菜单关联:把某对象的把某对象的ContextMunuStrip设置为该快捷设置为该快捷菜单菜单处理菜单事件处理菜单事件 Click事件在以下的情况下发生:事件在以下的情况下发生:用户单击菜单项用户单击菜单项 用户使用键盘操作菜单,并按用户使用键盘操作菜单,并按Enter键键 用户按
7、下与菜单项相关联的快捷键用户按下与菜单项相关联的快捷键创建与菜单项相关联创建与菜单项相关联的步骤创建与菜单项相关联的步骤:在菜单编辑器中,单击需要添加功能的菜单项在菜单编辑器中,单击需要添加功能的菜单项在在“属性属性”窗口中,按照所有菜单项使用的命窗口中,按照所有菜单项使用的命名规名规 则重命名则重命名 Name 属性属性双击菜单项来打开与双击菜单项来打开与Click事件相关联的事件处事件相关联的事件处 理程序理程序为事件处理程序编写代码为事件处理程序编写代码菜单项单击事件例子菜单项单击事件例子TextBox控件控件Dock:FillMultiline:TrueScrollBars:Both程
8、序运行时,默认对齐方式为程序运行时,默认对齐方式为“左对齐左对齐”。1、点、点“右对齐右对齐”菜单时,文本框里的内容变为菜单时,文本框里的内容变为“右对齐右对齐”2、点、点“居中对齐居中对齐”菜单时,文本框里的内容变为菜单时,文本框里的内容变为“居中居中齐齐”3、点、点“左对齐左对齐”菜单时,文本框里的内容又变为菜单时,文本框里的内容又变为“左对左对齐齐”注意:点相应命令后,相应菜单的注意:点相应命令后,相应菜单的Checked要随着变化要随着变化左对齐的左对齐的Checked:True随堂实训随堂实训创建一个创建一个Windows应用程序,并添加如图所示菜单项,应用程序,并添加如图所示菜单项
9、,练习目的是熟悉主要属性(练习目的是熟悉主要属性(Text、Name、Image、checked、ShortcutKeys、Enabled、Visible)的设置。)的设置。实训实训参考课本参考课本83-89的内容,设计一个简易的记事本。的内容,设计一个简易的记事本。创建和使用工具栏创建和使用工具栏 创建工具栏创建工具栏 使用使用 ToolStrip 控件的属性控件的属性 编写编写Click 事件处理方法事件处理方法工具栏项工具栏项目类型目类型创建工具栏创建工具栏 Image属性:显示在工具栏控件上的图像属性:显示在工具栏控件上的图像Text属性:显示的文字属性:显示的文字DisplaySty
10、le:可以有以下取值:可以有以下取值 None:显示空白显示空白 Text:仅显示仅显示Text属性设置的内容,不显示图像属性设置的内容,不显示图像 Image:不显示文字,仅显示不显示文字,仅显示Image属性设置的图像属性设置的图像 ImageAndText:同时显示文字和图像同时显示文字和图像使用使用 Windows 窗体设计器来打开要添加工具栏的窗体。窗体设计器来打开要添加工具栏的窗体。在工具箱上双击在工具箱上双击ToolStrip 控件,这样一个工具栏就添加到窗体上。控件,这样一个工具栏就添加到窗体上。向窗体创建并添加工具栏的步骤如下:向窗体创建并添加工具栏的步骤如下:ToolStr
11、ip工具栏项控件的主要属性工具栏项控件的主要属性编写编写Click 事件处理方法事件处理方法Click 事件处理方法:直接双击要添加单击事件的工具栏项。事件处理方法:直接双击要添加单击事件的工具栏项。注意:如果某行代码较长,要人工注意:如果某行代码较长,要人工换行时,先输入换行时,先输入“空格空格”,然后输,然后输入下划线入下划线“_”,接着按接着按Enter键键随堂实训随堂实训 添加如图所示工具栏,并添加添加如图所示工具栏,并添加Click事件。事件。创建和使用状态栏创建和使用状态栏 创建创建状态栏状态栏来增强程序界面的可来增强程序界面的可用性用性,显示窗体中一些有用的信息显示窗体中一些有用
12、的信息创建状态栏创建状态栏为状态栏添加状态栏项为状态栏添加状态栏项创建状态栏步骤创建状态栏步骤打开想要添加状态栏的窗体打开想要添加状态栏的窗体把把StatusStrip控件从工具箱添加到窗体中控件从工具箱添加到窗体中添加状态栏项添加状态栏项随堂实训随堂实训添加如图所示的状态栏添加如图所示的状态栏实训实训根据课本根据课本93-96的内容,完成案例的内容,完成案例5-3创建多文档界面创建多文档界面(MDI)利用利用MDI可以在一个包容式窗体中包可以在一个包容式窗体中包含多个窗体含多个窗体 用用MDI可以在一个单一的包容器窗体可以在一个单一的包容器窗体内建立和维护多个窗体的应用程序内建立和维护多个窗
13、体的应用程序 MDI中应用程序窗口称为中应用程序窗口称为”父窗体父窗体”,应用程序内部的窗口称为应用程序内部的窗口称为”子窗体子窗体”创建多文档窗体(续)创建多文档窗体(续)设置父窗体的设置父窗体的IsMdiContainer属性为属性为true。设置子窗体的设置子窗体的MDIParent属性为当前的父窗体对象属性为当前的父窗体对象,该属性不能在属性窗口中该属性不能在属性窗口中,只能通过代码设置只能通过代码设置,其格其格式如下式如下:(思考:子窗体对象如何定义思考:子窗体对象如何定义)子窗体对象子窗体对象.MDIParent=Me。Me表示是父窗体对象表示是父窗体对象创建多文档窗体的操作步骤:
14、创建多文档窗体的操作步骤:创建多窗体创建多窗体 多窗体应用程序中多窗体应用程序中,需要打开需要打开,关闭关闭,隐藏或显示指隐藏或显示指定窗体:定窗体:方 法用 法功 能Close()窗体名称.Close()关闭窗体,关闭窗体后,所有创建在该窗体中的资源都被关闭,且窗体被清除.Show()窗体名称.Show()显示一个窗体对象.在调用Show方法之前,窗体名称所代表的窗体实例必须存在Hide()窗体名称.Hide()使窗体对象不可见,但不关闭它.也就是虽然该窗体不显示,但它所包含的对象和变量仍保留在内存中MDIMDI窗体(窗体(父窗体、子窗体的使用)父窗体、子窗体的使用)实训实训 本练习在上一节
15、本练习在上一节课所做的带菜单课所做的带菜单栏的栏的Windows应应用程序的基础上用程序的基础上,使得该窗体为,使得该窗体为父窗体,同时建父窗体,同时建立第二个、第三立第二个、第三个窗体个窗体,使之成使之成为子窗体,同时为子窗体,同时在父窗体中显示在父窗体中显示子窗体。子窗体。小结小结 本任务我们掌握了基于本任务我们掌握了基于Windows的的应用程序的菜单、工具栏、状态栏,应用程序的菜单、工具栏、状态栏,并且学习了创建较为复杂的并且学习了创建较为复杂的Windows应用程序。应用程序。1.选择题选择题1)创建菜单时,在菜单项名称的前面输入创建菜单时,在菜单项名称的前面输入_,可以创建该项的访问键。可以创建该项的访问键。a)&b)!c)$d)#习题习题2.编程编程题题1)在表单上添加一个状态栏,在状态栏中说明在表单上添加一个状态栏,在状态栏中说明“此为状态栏,旁边可插入进度条、图片等此为状态栏,旁边可插入进度条、图片等”。习题(续)习题(续)