VB6.0: метод инициализации пользовательского элемента управления, вызываемый при загрузке проекта VB - PullRequest
4 голосов
/ 12 мая 2009

Всякий раз, когда мы загружаем проект VB, он вызывает Initialize событие пользовательского элемента управления (если он есть в проекте). Моя проблема в том, что у меня есть код в UserControl_Initialize, который будет пытаться создавать экземпляры других COM-объектов. На моей сборочной машине эти элементы управления не зарегистрированы. Один из вариантов - переместить код в другой метод, отличный от Initialize, но я хочу знать, есть ли лучшее решение? Где-то я обнаружил, что мы можем проверить, является ли вызывающее приложение редактором VB, а затем пропустить код инициализации ...

Ответы [ 2 ]

5 голосов
/ 12 мая 2009

Вы можете использовать:

If Not Me.DesignMode Then
  ...
End If

Другое решение, которое мы использовали, было маленькой функцией, которую можно использовать глобально:

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

Не знаю, правильно ли он синтаксически сформирован, но идея должна быть ясной: Только в IDE вызывается оператор отладки.

1 голос
/ 12 мая 2009

Это происходит только в том случае, если ваш проект был сохранен с открытым конструктором форм: это означает, что при запуске форма отображается (возможно, в фоновом режиме) и, следовательно, все элементы управления на ней должны быть инициализированы. Следовательно, ваш инициализатор пользовательского элемента управления называется , если этот элемент управления используется в форме.

Чтобы предотвратить это, просто сохраните проект с закрытым конструктором форм.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...