Событие загрузки формы запускается дважды, используя Interop Forms Toolkit - PullRequest
2 голосов
/ 19 сентября 2009

Я следил за статьей codeproject об использовании инструментария взаимодействия форм (в основном это способ для разработчиков медленно обновить свои проекты VB6 до .net, позволяя компонентам .net работать в VB6)

http://www.codeproject.com/KB/vb-interop/VB6InteropToolkit2.aspx

Несмотря на то, что форма .NET работает нормально во всех других проектах и ​​средах тестирования, я обнаружил, что событие Form_load фактически запускается дважды после выполнения во время выполнения VB6.

Не только раздражает, но и заставляет мой код инициализации выполняться дважды (вызывая всевозможные проблемы при втором запуске).

Есть ли какое-либо объяснение тому, почему это происходит (я хотел бы понять причину)?

Есть ли лучший способ обойти это, кроме

 If (runBefore = True) Then

Ответы [ 2 ]

2 голосов
/ 19 сентября 2009

Это может произойти, если вы неявно начинаете загрузку формы, обращаясь к общедоступной переменной в форме из другого модуля, а затем явно. Показывает форму до завершения загрузки.

0 голосов
/ 12 июня 2013

привет, я попробовал это, и это работает ..

Я положил это в form_activate. в основном, чтобы проверить, если форма уже загружена. если это так, то выгрузите его. Я использую меня как счетчик.

Private Sub Form_Activate ()

Dim TestForm As Form
i = 0
For Each TestForm In Forms
    If TestForm.Name = "frmStocks" Then i = i + 1
    If i = 2 Then Unload Me
Next TestForm

End Sub

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