Winforms WebBrowser设置最大内容宽度

本文关键字:大内 WebBrowser 设置 Winforms | 更新日期: 2023-09-27 18:25:31

有没有办法强制WebBrowser有点像最大内容宽度?我想显示html内容(都是样式文本),没有水平滚动,只有垂直滚动。那么,让我们假设一条消息This is a test message, that has no other purpose

This is a test
message, that
has no other
purpose

如果需要,将显示宽度垂直滚动条。

Winforms WebBrowser设置最大内容宽度

WebBrowser支持一些CSS样式属性,您可以将其作为内联样式插入到内容的<head>部分。您想要的是width;在body的默认类和可以确定为足够大的任何img标记的显式类中,将其设置为一个百分比(可能在90-100之间)(如何做到这一点取决于内容;有些图像是用它们的原生维度命名的,或者可以在标记中设置width属性以帮助提高渲染速度;如果其他操作都失败了,您可以使用WebBrowser.Document属性按ID访问DOM元素并获取其属性),并且内容将调整大小以适应WebBrowser控件的宽度。

然而,有一点需要注意。WebBrowser的默认呈现器(基于IE v6.1)不支持max-width属性(根据W3schools的文档,首先在IE 7中完全支持)。这将是比width更好的选择,因为它告诉浏览器在必要时缩小大小以适应,但不会像width: X%那样迫使图像大于实际大小。无论你的"显著大小"阈值是多少,在小窗口大小时,该条下的图像都会导致水平滚动问题,因为它不会调整大小;而在大窗口大小下,该条上方的图像会看起来很可笑,因为它确实会调整大小。

有一种方法可以通过Windows注册表强制IE在逐个应用程序的基础上使用更现代的渲染器,但这有点痛苦,因为注册表更改需要提升用户权限,从而触发UAC提示(而最终用户可能没有管理权限)。最好在安装时有一个带有一些自定义操作的安装程序为您执行此操作,或者如果您在美国公司,请管理员通过组策略推送注册表脚本(在任何计算机上,相同密钥的值相同)。

要使图像在运行时在没有管理员权限的情况下以类似于最大宽度属性的方式运行,您可以在内容的头部预先添加一些HTML,从一些稳定的web源导入JQuery,并为文档定义调整大小事件处理程序。此事件应查询文档中的所有图像,并使用它们的naturalHeightnaturalWidth(表示每个图像的原始大小)及其父图像的宽度将它们的大小设置为方面正确的最佳匹配,或设置为"自然"尺寸,以较小者为准。

哪种解决方案工作量较小取决于将正确的代码放在正确的位置最终会有多大,而对注册表进行更改会有多重要。