设计时运行 ShapeLabel 控件

与其它可编程对象不同,控件同时具有设计时和运行时的两种行为。 即开发者在设计时把一个控件实例放入窗体时,控件中的一些代码将会执行。

例如,放置在 UserControl_Resize 事件过程中的代码在设计和运行时都会执行。

为了调试控件设计时的行为,当放置有控件的测试窗体保持在设计模式中时,必须能够执行控件中的代码。

以下两个过程演示了这种灵活技巧。在第一个过程中,把代码添加到 ShapeLabel 控件的 Resize 事件中。在第二个过程中,当测试工程保持在设计模式中时,使 ControlDemo 的一部分进入运行模式后把 ShapeLabel控件的实例添加到测试工程的窗体中。

注意   本主题是演示创建示例性 ActiveX 控件的一系列步骤中的一部分。它是从创建 ActiveX 控件的主题开始。

要将代码添加到 Resize 事件中,请按照以下步骤执行:

  1. 在“工程资源管理器”窗口双击“ShapeLabel”激活其设计器。

  2. 双击“ShapeLabel”控件打开代码窗口。

  3. 在过程框中单击 Resize 事件以进入它的事件处理过程。添加下列代码:
    Private Sub UserControl_Resize()
    Static intCt As Integer
    intCt = intCt + 1
    Debug.Print "Resize " & intCt
    End Sub
    

    注意   事件处理过程名具有“UserControl”前缀,正如相对普通窗体的 Form_Resize 事件过程具有前缀 Form 一样。

开发普通的 Visual Basic 应用程序时,需要单击工具栏上的“启动”按钮或者按下 F5 键来运行应用程序。然而要把 ShapeLabel 控件放入Form1,只须运行此控件的代码而把其它代码保持在设计模式中。

要在设计时运行 ShapeLabel 控件,请按照以下步骤执行:

  1. 在“工程”口中双击 ShapeLabel ,将设计器前置,然后按下 CTRL+F4 来关闭窗口。关闭设计器窗口使 ShapeLabel 控件进入运行模式。只要控件进入运行模式,其图标(用户控件的默认工具箱图标)就出现在工具箱中。

    重点   不要单击工具栏上的“启动”按钮或者按下 F5 键,因为那样会使整个工程组进入运行模式从而无法把新控件添加到窗体中。

    当控件进入运行模式时,如何关闭设计器窗口就是无关紧要的了。(因为控件工具箱将变成灰色,所以总知道设计器是否打开。)

  2. 在“工程资源管理器”窗口双击“Form1”使其置前。

  3. 双击“ShapeLabel”图标以便把 ShapeLabel 控件添加到 Form1 中。该控件以带有抓取控点的灰色平面矩形形式出现。

    在“属性”窗口可以看见新控件的默认属性。刚刚添加到窗体中的 ShapeLabel 控件已被赋予缺省名 ShapeLabel1。

    注意   开始设计控件时便为其命名可避免引起混淆。假定把一个具有缺省名(比如 UserControl1)的控件放入窗体,新控件自动编号功能会把一个数字附加到这个控件名之后,得到一个象 UserControl11 这样的易混淆的名字。

  4. 当 ShapeLabel 控件放入窗体时,Resize 事件被引发。查看“立即”窗口能够见到这一事件。使用抓取控点进行数次调整控件大小的动作。每次调整控件大小时,Resize 事件均再次引发。

    如果只是在窗体里简单地移动控件,Resize 事件不会引发。

  5. 在 Form1 上双击“ShapeLabel”控件以便打开 Form1 的代码窗口。光标将出现在缺省事件过程 ShapeLabel1_GotFocus 上。可以用“过程”框来查看 Visual Basic 自动为控件提供的另外三种事件。 完成工作后要关闭代码窗口。

  6. 在“工程资源管理器”窗口双击“ShapeLabel”以便打开 ShapeLabel 设计器。 请注意放在 Form1 上的 ShapeLabel 控件标记上了阴影,这表明它是非活动的。

    打开一个控件的设计器会使该控件的所有实例变成非活动的。 更改控件代码窗口的代码也会使控件实例变成非活动的。

  7. 当设计器打开时,ShapeLabels 代码模块中的代码不能执行。 可用控点来调整 Form1 中带阴影的 ShapeLabel 控件的大小。Resize 事件不激发,因此在“立即”窗口不会出现新消息。

  8. 确保 ShapeLabel 的设计器在前面,然后按下 CTRL+F4 以关闭窗口,重新激活控件实例。阴影从 Form1 的控件上消失表明实例又被激活了。

    如果由于改动控件的代码而使控件变成非激活状态时,那么可用鼠标右键单击测试窗体以便显示其上下文菜单,单击“更新用户控件”可重新激活控件实例。

注意   由于这些过程需要许多的窗口,经常会看到 ShapeLabel设计器隐藏在另外一个窗体的后面。 可在“工程资源管理器”窗口双击“ShapeLabel”使设计器置前。

详细信息    关于在设计时代码运行的详细信息,请参阅第九章“建立 ActiveX 控件”中的“调试控件”部分。

步骤

本主题是演示创建示例性 ActiveX 控件的一系列步骤中的一部分。

请参阅
转到下一步 UserControl 对象的存活期
从头开始 创建 ActiveX 控件