CefSharp SetZoomLevel не работает - PullRequest
0 голосов
/ 25 мая 2018

Я использую в WinForm объект типа: CefSharp.WinForms.ChromiumWebBrowser

Все работает нормально, но у меня возникает проблема при попытке изменить ZoomLevel с помощью SetZoomLevel метода:

If oBrowser.IsBrowserInitialized Then
    oBrowser.SetZoomLevel(-2.0)
    Dim frame As CefSharp.IFrame = oBrowser.GetMainFrame
    Dim request As CefSharp.IRequest = frame.CreateRequest()

    request.Url = url
    request.Method = "POST"
    request.InitializePostData()
    Dim element = request.PostData.CreatePostDataElement()
    element.Bytes = postDataBytes
    request.PostData.AddElement(element)

    request.Headers = headers

    frame.LoadRequest(request)
End If

Когда я открываю WinForm в первый раз, уровень масштабирования не меняется, хотя он работает корректно со 2-го обновления.

Мне не хватает инициализации и / или вызова метода ... ИлиЯ должен вызывать этот метод в другой позиции?

Примечание: версия DLL CEFSharp - 63.0.3.0..NET Framework - это 4.5.2


РЕДАКТИРОВАНИЕ 01.06.2018 : я нашел решение (см. Ниже), но теперь есть другая проблема : изменение масштаба выполняется, когда браузер уже виден , поэтому конечному пользователю нежелательно видеть изменение размера страницы во время загрузки формы.

Кто-нибудь предлагал заморозить макет при смене масштаба?Обратите внимание, что .SuspendLayout() и .ResumeLayout() не работают.

1 Ответ

0 голосов
/ 01 июня 2018

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

Вы должны добавить обработчик LoadingStateChanged к объекту ChromiumWebBrowser:

AddHandler oBrowser.LoadingStateChanged, AddressOf WebBrowserOnLoadingStateChanged

Метод будет тогда чем-то вроде:

Private Sub WebBrowserOnLoadingStateChanged(ByVal sender As Object, ByVal loadingStateChangedEventArgs As LoadingStateChangedEventArgs)
    Dim oBrowser As WinForms.ChromiumWebBrowser = CType(sender, WinForms.ChromiumWebBrowser)

    If Not oBrowser.IsLoading Then
        oBrowser.SetZoomLevel(-2.0)
    End If
End Sub

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

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