VB. NET UserControl выставлен как элемент управления ActiveX VisibleChanged не вызывается при запуске в VB6 - PullRequest
1 голос
/ 02 апреля 2020

Я работаю над переносом 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, чтобы это событие было поднято?

...