CEFSharp (Chromium Embedded Framework) в пользовательском контроле взаимодействия

Я пытаюсь использовать привязки CefSharp CLR для Chromium Embedded Framework, чтобы создать альтернативный элемент управления веб-браузера, который мы можем встроить в приложение, которое поддерживает только устаревшие элементы управления ActiveX (WonderWare InTouch HMI), пытаясь получить некоторую поддержку HTML5 для некоторых из них. старые машины.

До сих пор я создал Interop User Control, используяMicrosoft InteropForms Toolkit и встроил в элемент управления CefSharp.WinForms WebView довольно простым способом, т.е.

Private Sub WebControl_Load(sender As Object, e As EventArgs) Handles Me.Load

    Dim Settings = New CefSharp.Settings
    If (CEF.Initialize(Settings)) Then
        WebView = New WebView(homepage, New BrowserSettings())
        WebView.Dock = DockStyle.Fill
    End If

    Me.Controls.Add(WebView)

End Sub

Когда я собираю DLL, я регистрирую ее с помощью команды

regasm / tlb / codebase Cefsharp.WebControl.dll

Похоже, это работает по большей части, но у меня есть некоторые проблемы, которые я не до конца понимаю. Я тестирую его с помощью VBA Forms в Excel (исключительно для удобства), и когда я использую Form Builder, он фактически инициализирует элемент управления при его добавлении в пользовательскую форму и прекрасно загружает веб-страницу:

Тем не менее, когда я пытаюсь показать UseForm, кажется, что он либо уничтожает дескриптор или экземпляр веб-просмотра (или оба), и я не могу понять, как это исправить. Однажды я пытаюсь показать форму и попробовать что-то вроде

Sub Test()
    WebForm.Show
    WebForm.WebControl.Navigate "www.google.com"
End Sub

Я получаю сообщение об ошибке, что объект не существует. Я немного запутался, и иногда я получаю разные ошибки, например, указатель недействителен, но до сих пор я не понял, как его правильно настроить. Я думаю, что это проблема с обработкой событий пользовательской формы, но я не уверен.

Если у кого-то есть понимание этого, я был бы очень признателен. Спасибо!

Ответы на вопрос(1)

Ваш ответ на вопрос