Я использую в 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, уровень масштабирования не меняется, а после второго обновления он работает правильно.
Мне не хватает инициализации и / или вызова метода ... Или мне нужно вызвать этот метод в другой позиции?
Примечание. Версия CEFSharp DLL - 63.0.3.0. .NET Framework - 4.5.2.
ОБНОВЛЕНО 01.06.2018: Я нашел решение (см. Ниже), но теперь есть еще одна проблема: изменение масштаба выполняется, когда браузер уже виден, поэтому конечному пользователю неприятно видеть изменение размера страницы во время загрузки формы.
Есть ли у кого-нибудь предложение заморозить макет при смене зума? Обратите внимание, что .SuspendLayout() и .ResumeLayout() не работают.





Я нашел способ ответить на свой вопрос. Я размещаю его здесь, так как он может быть полезен другим пользователям.
Вы должны добавить обработчик 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
Это решение хорошо работает в моей среде, но теперь есть еще одна проблема: изменение масштаба выполняется, когда браузер уже виден, поэтому конечному пользователю неприятно видеть изменение уровня масштабирования во время загрузки формы.
Когда вы набираете код? Возможно, вам понадобится выполнить его позже. Что произойдет, если вы измените уровень масштабирования после загрузки страницы?