VB6.0:初始化加载VB项目时调用的用户控件的方法

Par*_*gon 4 vb6 user-controls initialization

每当我们加载VB项目时,它将调用Initialize用户控件的事件(如果项目中有任何内容).我的问题是,我有一些代码UserControl_Initialize将尝试创建其他COM对象的实例.在我的构建机器上,这些控件未注册.一种选择是将代码移动到除了之外的其他方法,Initialize但我想知道是否有更好的解决方案?某处我发现我们可能会检查调用应用程序是否是VB编辑器然后跳过初始化代码...

H-M*_*an2 5

您可以使用:

If Not Me.DesignMode Then
  ...
End If
Run Code Online (Sandbox Code Playgroud)

我们使用的另一个解决方案是一个可以在全球范围内使用的小功能:

Public Function IsRuntime() as Boolean
   On Error Goto NotRuntime
   Debug.Print(1 / 0)
   IsRuntime = True
   Exit Function
NotRuntime:
   IsRuntime = False
End If
Run Code Online (Sandbox Code Playgroud)

不知道它是否在语法上形成良好,但这个想法应该是明确的:只有在IDE中调用debug语句.

  • 第一个解决方案应该是If Not Ambient.UserMode for VB6.例如http://msdn.microsoft.com/en-us/library/aa241637(VS.60).aspx (4认同)
  • 请注意,这两种解决方案的行为略有不同.当控件处于设计模式时,第一个解决方案总是关闭代码(只有在将控件构建到OCX时才会有所不同).无论是在设计模式*还是在运行模式*下,第二个解决方案始终在从IDE运行时关闭代码.从IDE运行以测试运行时行为时,可能会使控件正常工作. (2认同)