界面样式
如果使用过基于 Windows 的应用程序,也许已经注意到不是所有用户界面看上去或操作起来都一样。用户界面样式主要有两种:单文档界面 (SDI) 和多文档界面 (MDI)。SDI 界面的一个示例就是 Microsoft Windows 中的WordPad(记事本)应用程序(图 6.1)。在 WordPad 中,只能打开一个文档,想要打开另一个文档时,必须先关上已打开的文档。
象 Microsoft Excel 和 Microsoft Word for Windows 这样的应用程序就是MDI 界面;它们允许同时显示多个文档,每一个文档都显示在自己的窗口中(图 6.2)。按照是否包含有能在窗口或文档之间进行切换的子菜单的Windows 菜单项,就能识别出 MDI 应用程序。
要决定哪种界面样式最好,需要看应用程序的目的。一个处理保险索赔的应用程序可能要用多文档界面 MDI 样式,一个职员很可能会同时处理一个以上索赔,或者需要对两个索赔进行比较。另一方面,日历程序最好设成 SDI(单文档界面)样式,因为不大需要同时打开一个以上日历;在极少的情况下,可以再打开一个单文档界面应用程序的实例。
SDI 样式更常用,《程序员指南》中的大多数实例都采用 SDI 应用程序。关于创建 MDI 应用程序有一些需要单独考虑的问题和技巧,放在本章后面“多文档界面 (MDI) 应用程序”一节。
除了以上两个最常用的界面样式 SDI 与 MDI 外,第三种界面样式变得越来越流行,这就是资源管理器样式的界面(图 6.3)。资源管理器样式界面是包括有两个窗格或者区域的一个单独的窗口, 通常是由左半部分的一个树型的或者层次型的视图和右半部分的一个显示区所组成,如在 MicrosoftWindows 的资源管理器中所见到的那样。这种样式的界面可用于定位或浏览大量的文档、图片或文件。 除了本章所附的 MDI 与 SDI 应用程序示例,实用程序向导还提供了一种比较界面样式差别的方法。可以用向导来为每一种样式生成一个框架,然后观察它生成的窗体与代码。
详细信息 要了解更多的关于 MDI 应用程序的知识,请参阅“多文档界面 (MDI) 应用程序”一节。有关窗体使用的基础,请参阅第三章“窗体、控件与菜单”。有关访问实用程序向导的信息,请参阅第四章“工程的管理”中“使用向导和外接程序”一节。
多文档界面 (MDI) 应用程序
多文档界面 (MDI) 允许创建在单个容器窗体中包含多个窗体的应用程序。像Microsoft Excel 与 Microsoft Word for Windows 这样的应用程序就具有多文档界面。
MDI 应用程序允许用户同时显示多个文档,每个文档显示在它自己的窗口中。文档或子窗口被包含在父窗口中,父窗口为应用程序中所有的子窗口提供工作空间。例如:Microsoft Excel 允许创建并显示不同样式的多文档窗口。每个子窗口都被限制在 Excel 父窗口的区域之内。当最小化 Excel时,所有的文档窗口也被最小化,只有父窗口的图标显示在任务栏中。子窗体就是 MDIChild 属性设置为 True 的普通窗体。一个应用程序可以包含许多相似或者不同样式的 MDI 子窗体。
在运行时,子窗体显示在 MDI 父窗体工作空间之内(其区域在父窗体边框以内及标题与菜单栏之下)。当子窗体最小化时,它的图标显示在 MDI 窗体的工作空间之内,而不是在任务栏中,如图 6.4 所示。
注意 一个应用程序也可以包括标准的、不是包含在 MDI 窗体之内的非MDI 窗体。 MDI 应用程序中标准窗体的典型用法是显示 模式的对话框。
MDI 窗体相似于具有一个限制条件的普通窗体。除非控件具有 Align 属性(如 PictureBox 控件)或者具有不可见界面(如 Timer 控件),否则不能将控件直接放置在 MDI 窗体上。
创建 MDI 应用程序
使用下列步骤来创建 MDI 窗体及其子窗体。
要创建 MDI 应用程序,请按照以下步骤执行:
1. 创建 MDI 窗体。
从“工程”菜单中选取“添加 MDI 窗体”。
注意 一个应用程序只能有一个 MDI 窗体。如果工程已经有了一个 MDI窗体,则该“工程”菜单上的“添加 MDI 窗体”命令就 不可使用。
2. 创建应用程序的子窗体。
要创建一个 MDI 子窗体,先创建一个新窗体(或者打开一个存在的窗体),然后把它的 MDIChild 属性设为 True。
设计时使用 MDI 子窗体
在设计时,子窗体不是限制在 MDI 窗体区域之内。可以添加控件、设置属性、编写代码以及设计子窗体功能,就像在其它 Visual Basic 窗体中做的那样。
通过查看 MDIChild 属性或者检查工程资源管理器,可以确定窗体是否是一个 MDI 子窗体。如果该窗体的 MDIChild 属性设置为 True,则它是一个子窗体。Visual Basic 在“工程资源管理器”中为 MDI 窗体与 MDI 子窗体显示了特定的图标,如图 6.5 所示。
图 6.5 工程资源管理器中的图标标明 MDI 子窗体、标准窗体和 MDI 窗体
MDI 窗体运行时的特性
在运行时,MDI 窗体及其所有的子窗体都呈现特定的性质:
1.所有子窗体均显示在 MDI 窗体的工作空间内。像其它的窗体一样,用户能移动子窗体和改变子窗体的大小,不过,它们被限 制于这一工作空间内。
2.当最小化一个子窗体时,它的图标将显示于 MDI 窗体上而不是在任务栏中。当最小化 MDI 窗体时,此 MDI 窗体及其所有子 窗体将由一个图标来代表。当还原 MDI 窗体时,MDI 窗体及其所有子窗体将按最小化之前的状态显示出来。
3.当最大化一个子窗体时,它的标题会与 MDI 窗体的标题组合在一起并显示于 MDI 窗体的标题栏上(参见图 6.6)。
4.通过设定 AutoShowChildren 属性,子窗体可以在窗体加载时自动显示(True) 或自动隐藏 (False)。
5.活动子窗体的菜单(若有)将显示在 MDI 窗体的菜单栏中,而不是显示在子窗体中。