Я работаю над переносом VB6 UserControl на VB. NET и Windows форм. Часть инициализации и деинициализации в коде VB6 была сделана в обработчиках UserControl_Show () и UserControl_Hide (); По предложению VB Migration Partner я обработал событие VisibleChanged в перенесенном коде, чтобы вызвать их.
<ComVisible(True)>
Public Class MigratedUserControl
Inherits UserControl
' This is never called when used with a VB6 form.
Private Sub Me_VisibleChanged(ByVal sender As Object, ByVal e As EventArgs) Handles Me.VisibleChanged
Debug.Print("Me_VisibleChanged")
If Me.Visible AndAlso Not mBeenShown Then
mBeenShown = True
UserControl_Show()
ElseIf Not Me.Visible AndAlso mBeenShown Then
mBeenShown = False
UserControl_Hide()
End If
End Sub
End Class
Перенесенный элемент управления отображается как элемент управления ActiveX. При запуске в тестовом контейнере ActiveX (TstCon32.exe) событие VisibleChanged вызывается, как и ожидалось. Однако при добавлении в форму VB6 (да, некоторые наши клиенты захотят это сделать), и форма запускается в IDE VB6, обработчик VisibleChanged в перенесенном элементе управления не вызывается.
Нужно ли делать что-то особенное в VB6, чтобы это событие было поднято?