手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>程序设计>VB>列表

Visual Basic 用户界面

来源:互联网 作者:west263.com 时间:2008-02-23
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!


    MDI 窗体运行时的特性
    在运行时,MDI 窗体及其所有的子窗体都呈现特定的性质:
    1.所有子窗体均显示在 MDI 窗体的工作空间内。像其它的窗体一样,用户能移动子窗体和改变子窗体的大小,不过,它们被限     制于这一工作空间内。
    2.当最小化一个子窗体时,它的图标将显示于 MDI 窗体上而不是在任务栏中。当最小化 MDI 窗体时,此 MDI 窗体及其所有子     窗体将由一个图标来代表。当还原 MDI 窗体时,MDI 窗体及其所有子窗体将按最小化之前的状态显示出来。
    3.当最大化一个子窗体时,它的标题会与 MDI 窗体的标题组合在一起并显示于 MDI 窗体的标题栏上(参见图 6.6)。

    4.通过设定 AutoShowChildren 属性,子窗体可以在窗体加载时自动显示(True) 或自动隐藏 (False)。
    5.活动子窗体的菜单(若有)将显示在 MDI 窗体的菜单栏中,而不是显示在子窗体中。

    MDI NotePad 应用程序
    MDI NotePad 示例应用程序是一个简单的文本编辑器,它与 MicrosoftWindows 中包含的 NotePad 应用程序相似。不过,MDI NotePad 应用程序使用的是一个多文档界面 (MDI)。在运行时,若用户需要一个新文档(用该应用程序的“文件”菜单中的“新建”命令执行),应用程序就会创建子窗体的一个新实例。这就允许按其所需创建多个子窗体或文档。
    在 Visual Basic 中为了创建以文档为中心的应用程序,至少需要两个窗体:一个 MDI 窗体和一个子窗体。设计时,应创建一个 MDI 窗体以容纳该应用程序,再创建一个子窗体作为这个应用程序文档的模板。
    要创建自己的 MDI NotePad 应用程序,请按照以下步骤执行:
    1. 从“文件”菜单中,选取“新建工程”命令。
    2. 从“工程”菜单中,选取“添加 MDI 窗体”命令来创建容器窗体。现在,这个工程应当包含一个 MDI 窗体 (MDIForm1) 和     一个标准窗体(Form1)。
    3. 在 Form1 上创建一个文本框 (Text1)。
    4. 按下列方式为两个窗体和文本框设置属性。

    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 技巧的差别。

    使用 MDI 窗体及其子窗体
    当 MDI 应用程序在一次会话中要打开、保存和关闭几个子窗体时,应当能够引用活动窗体和保持关于子窗体的状态信息。这个主题描述了一些用来指定活动子窗体或者控件、加载和卸载 MDI 窗体及其子窗体、以及保持子窗体的状态信息的编码技巧。

    指定活动子窗体或控件
    有时要提供一条命令,它用于对当前活动子窗体上具有焦点的控件进行操作。例如,假设想从子窗体的文本框中把所选文本复制到剪贴板上。在Mdinote.vbp 示例应用程序中,“编辑”菜单上的“复制”项的 Click 事件将会调用 EditCopyProc,它是把选定的文本复制到剪贴板上的过程。
    由于应用程序可以有同一子窗体的许多实例,EditCopyProc 需要知道使用的是哪一个窗体。为了指定这一点,使用 MDI 窗体的 ActiveForm 属性,该属性可以返回具有焦点的或者最后被激活的子窗体。
    注意 当访问 ActiveForm 属性时,至少应有一个 MDI 子窗体被加载或可见,否则会返回一个错误。
    当一个窗体中有几个控件时,也需要指定哪个控件是活动的。像 ActiveForm属性一样,ActiveControl 属性能返回活动子窗体上具有焦点的控件。下边是副本例程的示例,从子窗体菜单、MDI 窗体菜单或者是工具栏按钮上可对它进行调用。
    Private Sub EditCopyProc ()
      ' 将选定文本复制到剪贴板上。
      CliPBoard.SetText _
        frmMDI.ActiveForm.ActiveControl.SelText
    End Sub
    假如,正在编写被多个窗体实例调用的代码,不用窗体标识符访问窗体的控件或属性是一个好办法。例如,用 Text1.Height 引用 Form1上文本框的高度,而不是使用 Form1.Text1.Height。这样,该代码总是影响当前窗体。
    在代码中指定当前窗体的另一种方法是用 Me 关键字。用 Me 关键字来引用当前其代码正在运行的窗体。当需要把当前窗体实例的引用参数传递给过程时,这个关键字很有用。

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!