第四章 窗体界面设计
【教学目标】
1. 掌握主菜单、弹出式菜单的制作; 2. 掌握工具栏的制作; 3. 掌握状态栏的制作。 【重点、难点】
1. 各控件的常用属性;(重) 2. 属性的设置方法。(难)
【教学时数】4学时(2学时理论+2学时实践)
4.1 窗体界面设计原则
1. 窗体界面风格要一致:设计具有多个窗体界面的应用程序时,要使各窗体的用户界
面风格保持一致。这不仅要求相关控件位置、说明信息和颜色方案一致,也要求操作方式一致。
2. 窗体界面布局要合理,符合使用习惯:窗体界面控件选择符合Windows应用程序操
作习惯,容易让人理解和接受。
3. 适当的提示,及时的帮助:窗体界面设计要充分为用户着想,用户操作前和完成后,
应该给予及时地提示,随时能够获取主题帮助。
4.2菜单设计
菜单可分为两类,主菜单和快捷菜单 1.主菜单设计
主菜单由菜单栏和下拉子菜单组成,菜单栏位于标题栏的下面,由多个横向的菜单标题组成,当单击某个菜单标题时,将打开其下拉子菜单。
1)MenuStrip控件常用的属性:
? MdiWindowListItem:获取或设置用于显示MDI子窗体列表的ToolStripMenuItem。 ? ShowItemToolTips:获取或设置一个值,该值指示是否为MenuStrip显示工具提示。 ? GripStyle:设置是否显示菜单最左侧的栅格(栅格是指菜单左侧4个垂直排列的点),
栅格隐藏后用户就不能移动该菜单了。
ToolStripMenuItem对象用于生成菜单项,或作为子菜单的容器。为了显示 ToolStripMenuItem,必须将其添加到MenuStrip或ContextMenuStrip控件中。ToolStripMenuItem 类提供了配置菜单项外观和功能的属性。
2)ToolStripMenuItem对象的常用属性:
? Checked属性:用来设置菜单项前面是否显示“√”,此功能可以标识在互斥的菜单
项列表中选定的菜单项。
? ShortcutKeys属性:用来设置菜单项的快捷键。 ? Enabled属性:用来设置菜单项是否可用。 ? ShowShortcut属性:用来设置是否显示快捷键。 ? Text属性:用来设置菜单项的显示标题文本。 ? Visible属性:用来设置菜单项是否可见。
? AutoToolTip属性:用来设置是否显示由ToolTipText属性提供的菜单项功能文本提
示。
? ToolTipText属性:用来获取或设置菜单项功能的文本提示。 3)ToolStripMenuItem对象的常用事件:
? Click事件:是MenuItem对象最常用的事件,只要和菜单项执行操作相关的代码,
全部放在Click事件中。用鼠标单击菜单项或者使用菜单项的访问键或快捷键时,都会触发Click事件。
? CheckedChanged事件:当菜单项的Checked属性值发生改变时触发该事件。 4)演示设计主菜单,并添加处理菜单事件。
2.快捷菜单设计
快捷菜单由ContextMenuStrip控件创建,该控件和MenuStrip控件一样由ToolStripMenuItem对象组成,这些对象构成了快捷菜单的菜单项。参照制作主菜单的方法即可创建出弹出式菜单。
快捷菜单通常与某一控件(或窗体)相关联,可以右击调出它。关联的方法是选择需要关联快捷菜单的控件,设置其ContextMenuStrip属性值设为快捷菜单的名称,这样在右击控件的时候才会弹出快捷菜单。
演示设计快捷菜单。
4.3工具栏与状态栏设计 1.工具栏设计
使用ToolStrip控件及其相关控件创建工具栏,ToolStrip控件可以看作是一个创建工具栏的容器控件,它使用一组基于ToolStripItem类的控件创建工具栏上的按钮和标签,这些ToolStripItem类控件必须在ToolStrip容器控件中使用。 1) ToolStrip控件一些重要的属性和事件:
? Anchor属性:可以使控件与父容器的特定边缘始终保持固定不变。
? Dock属性:可以使控件停靠到父容器的某个边缘,强迫控件与父容器的边缘保持接
触。
? ShowItemToolTip属性:设置是否显示工具栏上的某个按钮的工具提示 。
? AllowItemReorder属性:指示拖放和项重新排序是否专门由ToolStrip 类进行处理。 ? LayoutStyle属性:指示ToolStrip如何对其项进行布局。 ? RenderMode属性:获取或设置要应用于ToolStrip的绘制样式。
? GripStyle属性:设置栅格是否显示,栅格隐藏后用户就不能再移动工具栏。 ? Items属性:用于获取属于ToolStrip的所有项,如文本、按钮等控件。 2) ToolStripItem类控件
ToolStripItem类控件用于创建工具栏上的标签、分隔符、按钮和面板,必须将ToolStripItem类控件包含在ToolStrip、MenuStrip、StatusStrip或ContextMenuStrip中,不能直接将该控件放在窗体中。
ToolStripItem 控件的相应子集控件有:ToolStripButton(按钮)、ToolStripLabel(文本、链接文本或图像标签)和ToolStripSeparator(分隔线)、ToolStripDropDownButton(文本、图像、下拉按钮)、ToolStripTextBox(文本框)、ToolStripSplitButton(文本、下拉按钮)、ToolStripProgressBar(进度条)、ToolStripComboBox(下拉列表框)等,这些控件是组成工具栏的界面元素。
ToolStripItem类控件的常用属性和事件如下:
? Image属性:获取或设置显示在ToolStripItem上的图像,该属性可以通过项目资源管
理窗口设置属性值,属性值为图形文件带路径的文件名称。 ? Text属性:获取或设置要显示在项上的文本。 ? Font属性:获取或设置由该项显示的文本的字体。
? TextAlign属性:获取或设置ToolStripLabel上的文本的对齐方式。
? TextDirection属性:获取ToolStripItem上所用文本的方向。属性值有水平、垂直90
度和垂直270度等:
? DisplayStyle属性:获取或设置是否在ToolStripItem 上显示文本和图像。可以设置的
属性值有:None、Text、Image、ImageandText。
? ToolTipText:获取或设置作为控件的ToolTip显示的文本。
? AutoToolTip获取或设置一个值,该值指示是否使用ToolStripItem 工具提示的Text 属
性或ToolTipText属性,属性值默认为True。
3)演示设计工具栏
2.状态栏设计
窗体中状态栏的创建使用StatusStrip控件,StatusStrip控件与ToolStrip控件一样是一个容器控件,通过在控件中创建ToolStripItem对象来创建状态栏的面板。 1) StatusStrip控件
StatusStrip控件是一个可灵活配置的、可扩展的控件,具有较多的属性、方法和事件,下面是一些常用的属性:
? Stretch属性:获取或设置一个值,该值指示StatusStrip是否在它的ToolStripContainer
中从一端拉伸到另一端。
? Items属性:获取属于状态栏控件的所有项,例如ToolStripStatusLabel等对象。 2) ToolStripStatusLabel控件
ToolStripStatusLabel是状态栏中用来显示应用程序状态的面板,面板上可以显示应用程序的文本信息或图标。ToolStripStatusLabel控件有如下常用属性和事件:
? AutoSize属性:指示是否自动调整控件的大小以完整显示其内容。 ? Text属性:获取或设置要显示在状态栏面板上的文本。
? TextAlign属性:获取或设置ToolStripLabel上的文本的对齐方式。 ? TextDirection属性:获取ToolStripItem上所用文本的方向。 ? ToolTipText获取或设置作为控件的 ToolTip 显示的文本。 ? Image属性:获取或设置显示在状态栏面板上的图像。 ? ImageAlign属性:获取或设置状态栏面板上的图像对齐方式。 3)演示设计状态栏
3.创建可停靠的菜单和工具栏 4.4MDI窗体设计
按传统的习惯分类,Windows应用程序的界面有三类:对话框应用程序,单一文档界面应用程序(SDI)和多文档应用程序(MDI)。
? 基于对话框的应用程序:不能最大化和还原 ? 单文档界面的应用程序:窗口可以最大化和还原 ? 多文档界面的应用程序:在主窗口中可以打开多个子窗口 1.创建MDI应用程序 (1) MDI父窗体
MDI父窗体由普通的窗体转变而来,将普通窗体的IsMDIContainer属性设置为True,普通窗体就成了MDI父窗体。普通窗体成为MDI父窗体后,其底色会显示为深灰色。 父窗体常用的属性、事件和方法如下:
? Name属性:主窗体的名称,程序中标识主窗体类。
? IsMdiContainer属性:是否作为主窗体,属性值设置为True。 ? Text属性:设置或获取主窗体的标题。
? WindowState属性:应用程序启动时,主窗体的状态,一般将属性值设置为Maximized。 ? MdiChildren属性:获取一个窗体数组,数组中的元素为以该窗体为父窗体的子窗体。 ? ActiveMdichild属性:获取MDI窗口中当前活动的子窗口。
? MdiChildActivate事件:在多文档界面应用程序内激活或关闭MDI子窗体时发生。 ? LayOutMdi( )方法:在MDI父窗体内排列多文档界面子窗体 (2) MDI子窗体
在VB2005中,窗体的父子关系是在运行时建立的,只能在程序代码中进行设置,其方法是把窗体的MDIParent属性设置为MDI父窗体,这样一个窗体就成为了MDI子窗体。如果父窗体中有多个子窗体,可以使用父窗体的LayoutMdi方法来排列它们
演示设计MDI应用程序。