MDI NotePad 示例应用程序是一个简单的文本编辑器,它与 Microsoft Windows 中包含的 NotePad 应用程序相似。不过,MDI NotePad 应用程序使用的是一个多文档界面 (MDI)。在运行时,若用户需要一个新文档,(用该应用程序的“文件”菜单中的“新建”命令执行),应用程序就会创建子窗体的一个新实例。这就允许按其所需创建多个子窗体或文档。
在 Visual Basic 中为了创建以文档为中心的应用程序,至少需要两个窗体:一个 MDI 窗体和一个子窗体。设计时,应创建一个 MDI 窗体以容纳该应用程序,再创建一个子窗体作为这个应用程序文档的模板。
要创建自己的 MDI NotePad 应用程序,请按照以下步骤执行:
现在,这个工程应当包含一个 MDI 窗体 (MDIForm1) 和一个标准窗体 (Form1)。
对象 | 属性 | 设置值 |
MDIForm1 | Caption | MDI NotePad |
Form1 | Caption MDIChild |
无标题 True |
Text1 | MultiLine Text Left Top |
True (空值) 0 0 |
标题 | 名称 | 缩进 |
&File | mnuFile | 否 |
&New | mnuFileNew | 是 |
Private Sub mnuFileNew_Click () '
创建名为NewDoc
的窗体Form1
的一个新实例。Dim NewDoc As New Form1
'
显示此新窗体。NewDoc.Show
End Sub
这个过程创建并显示 Form1 的名为 NewDoc 的一个新实例(或其副本)。每当从“文件”菜单中选取“新建”命令时,将会创建一个与 Form1 完全相同的副本(实例),它包含 Form1 所包含的所有控件和代码。
Private Sub Form_Resize() '
扩展文本框以放置当前子窗体。Text1.Height = ScaleHeight
Text1.Width = ScaleWidth
End Sub
Form_Resize 事件过程的代码,象 Form1 中的所有代码一样,能为 Form1 的每一个实例所共享。当显示窗体的几个副本时,每个窗体都能识别各自的事件。当一个事件出现时,该事件过程的代码就会被调用。由于相同的代码为每个实例所共享,关于调用该代码的窗体是如何引用的,尤其是每个实例都具有相同的名字 (Form1) 时。这个问题将在本章后面的“使用 MDI 窗体及其子窗体”一节中讨论。
提示 除了本章提到的以外,Mdinote.vbp 示例应用程序还包含许多 MDI 技巧。花一些时间对该示例代码进行全面研究会找到这些技巧。Sdinote.vbp 示例应用程序是同一应用程序转换为 SDI 样式的实现;比较这两个例子可以明白 MDI 和 SDI 技巧的差别。