MDI NotePad 应用程序

MDI NotePad 示例应用程序是一个简单的文本编辑器,它与 Microsoft Windows 中包含的 NotePad 应用程序相似。不过,MDI NotePad 应用程序使用的是一个多文档界面 (MDI)。在运行时,若用户需要一个新文档,(用该应用程序的“文件”菜单中的“新建”命令执行),应用程序就会创建子窗体的一个新实例。这就允许按其所需创建多个子窗体或文档。

在 Visual Basic 中为了创建以文档为中心的应用程序,至少需要两个窗体:一个 MDI 窗体和一个子窗体。设计时,应创建一个 MDI 窗体以容纳该应用程序,再创建一个子窗体作为这个应用程序文档的模板。

要创建自己的 MDI NotePad 应用程序,请按照以下步骤执行:

  1. 从“文件”菜单中,选取“新建工程”命令。

  2. 从“工程”菜单中,选取“添加 MDI 窗体”命令来创建容器窗体。

    现在,这个工程应当包含一个 MDI 窗体 (MDIForm1) 和一个标准窗体 (Form1)。

  3. 在 Form1 上创建一个文本框 (Text1)。

  4. 按下列方式为两个窗体和文本框设置属性。
    对象 属性 设置值
    MDIForm1 Caption MDI NotePad
    Form1 Caption
    MDIChild
    无标题
    True
    Text1 MultiLine
    Text
    Left
    Top
    True
    (空值)
    0
    0

  5. 使用“菜单编辑器”(从“工具”菜单中),为 MDIForm1创建一个“文件”菜单。
    标题 名称 缩进
    &File mnuFile
    &New mnuFileNew

  6. 在 mnuFileNew_Click 过程中增加以下代码:
    Private Sub mnuFileNew_Click ()
    ' 创建名为 NewDoc 的窗体 Form1 的一个新实例。
    Dim NewDoc As New Form1
    ' 显示此新窗体。
    NewDoc.Show
    End Sub
    

    这个过程创建并显示 Form1 的名为 NewDoc 的一个新实例(或其副本)。每当从“文件”菜单中选取“新建”命令时,将会创建一个与 Form1 完全相同的副本(实例),它包含 Form1 所包含的所有控件和代码。

  7. 给 Form1 窗体的 Form_Resize 过程添加以下代码:
    Private Sub Form_Resize()
    ' 扩展文本框以放置当前子窗体。
    Text1.Height = ScaleHeight
    Text1.Width = ScaleWidth
    End Sub
    

    Form_Resize 事件过程的代码,象 Form1 中的所有代码一样,能为 Form1 的每一个实例所共享。当显示窗体的几个副本时,每个窗体都能识别各自的事件。当一个事件出现时,该事件过程的代码就会被调用。由于相同的代码为每个实例所共享,关于调用该代码的窗体是如何引用的,尤其是每个实例都具有相同的名字 (Form1) 时。这个问题将在本章后面的“使用 MDI 窗体及其子窗体”一节中讨论。

  8. 按 F5 键可运行该应用程序。

提示 除了本章提到的以外,Mdinote.vbp 示例应用程序还包含许多 MDI 技巧。花一些时间对该示例代码进行全面研究会找到这些技巧。Sdinote.vbp 示例应用程序是同一应用程序转换为 SDI 样式的实现;比较这两个例子可以明白 MDI 和 SDI 技巧的差别。