c# - Windows 窗体 Web 浏览器控制缩放级别

标签 c# .net winforms internet-explorer webbrowser-control

我正在使用 Web 浏览器控件在我的应用程序中显示一些即时生成的 HTML 文档。

问题是,在我的机器上,文件显示有点放大。在其他同事的电脑上,一切看起来“正常”。它必须是某种本地设置,但我找不到在哪里更改它。

我可以按 CTRL + 滚轮来缩小,但不保留缩放级别。据我所知,没有简单的方法以编程方式设置预定义的缩放级别。

这可能不太可能,但我担心它与 Internet Explorer(我从未使用过)及其设置有关。不幸的是,更改控件类型不是一个可行的选择。

非常感谢任何帮助,谢谢。

最佳答案

Problem is, on my machine said documents are displayed kinda zoomed in.

Internet Explorer 遵循窗口缩放设置。因此,您将在缩放比例为 100 的系统上的 WebBrowser 控件上看到的大小与您在缩放比例为 150 的系统上的 WebBrowser 控件上看到的大小不同, 而两个 WebBrowser 控件都设置为 100% 缩放。

原因是缩放。比例因子与 Windows 比例因子除以 100 或 physicalScreenHeight/logicalScreenHeight 相同。

As far as I can see, there's no easy way to set the predefined zoom level programmatically.

其实是有的。要更改 Web 浏览器控件的缩放级别,您可以获得 IWebBrowser2来自 WebBrowser.ActiveXInstance 的实例属性,然后使用其 ExecWB方法,以这种方式设置缩放:

int OLECMDID_OPTICAL_ZOOM = 63;
int OLECMDEXECOPT_DONTPROMPTUSER = 2;
dynamic iwb2 = webBrowser1.ActiveXInstance;
object zoom = 200; //The value should be between 10 , 1000
iwb2.ExecWB(OLECMDID_OPTICAL_ZOOM, OLECMDEXECOPT_DONTPROMPTUSER, zoom, zoom);

您还可以添加对 Microsoft Internet Controls (SHDocVw.dll) 的引用并将 WebBrowser.ActiveXInstance 转换为 SHDocVw.WebBrowser 并使用 ExecWB 方法。但是上面的代码在没有添加任何引用的情况下就达到了目的。

Web 浏览器缩放与 CSS3 缩放完全不同。但是您可能想知道如何设置文档正文缩放:webBrowser1.Document.Body.Style = "zoom:200%";

上述所有代码都应在文档完成后运行。

关于c# - Windows 窗体 Web 浏览器控制缩放级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52217916/

相关文章:

c# - 我做错了什么?/菜鸟?学习编程

c# - System.Text.Json.JsonException : The JSON value could not be converted

c# - 如何将 List<object> 转换为 Json 格式并在 C# 中填充 <tbody>?

.net - 如何阻止Winforms面板滚动?

c# - 如何修复 .NET Windows 应用程序在启动时崩溃并出现异常代码 : 0xE0434352?

c# - 如何使用 C# 在 Button Hover 上创建动画发光效果?

c# - 我可以更好地重写此 LINQ to XML 吗?

c# - SessionManager 和 Session 随机为 null

c# - Windows Workflow Foundation - 获取已执行事件的列表?

javascript - IE7 中 window.open() 后权限被拒绝