我使用了一个扩展方法来缩放,然后确保滚动条位于顶部。它需要一些不寻常的引用:用于缩放的Microsoft Internet控件和用于滚动的Microsoft.mshtml。
public static void SetZoom(this System.Windows.Controls.WebBrowser wb, int zoom)
{
try
{
FieldInfo webBrowserInfo = wb.GetType().GetField("_axIWebBrowser2", BindingFlags.Instance | BindingFlags.NonPublic);
object comWebBrowser = null;
object zoomPercent = zoom;
if (webBrowserInfo != null)
comWebBrowser = webBrowserInfo.GetValue(wb);
if (comWebBrowser != null)
{
InternetExplorer ie = (InternetExplorer)comWebBrowser;
ie.ExecWB(OLECMDID.OLECMDID_OPTICAL_ZOOM, OLECMDEXECOPT.OLECMDEXECOPT_DONTPROMPTUSER, ref zoomPercent, IntPtr.Zero);
if (wb.Document is mshtml.HTMLDocument htmlDoc)
{
htmlDoc.parentWindow.scrollTo(0, 0);
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}