Winforms WebBrowser设置最大内容宽度

时间:2014-10-02 16:00:11

标签: c# html css winforms

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

This is a test
message, that
has no other
purpose

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

1 个答案:

答案 0 :(得分:0)

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

然而,有一点需要注意。 WebBrowser的默认渲染器(基于IE v6.1)不支持max-width属性(根据W3schools&#39;文档,首先在IE 7中完全支持)。这将是更好的选项,而不是width,因为它告诉浏览器在必要时调整大小以适应,但不会像width: X%那样强制图像大于实际大小。无论你的门槛大小是多少?#34;是的,在那个条形图下方有一个图像会导致小窗口尺寸的水平滚动头痛,因为它没有调整大小,而在该条形图上方的图像在大窗口尺寸看起来很荒谬,因为它会调整大小。 / p>

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

为了使图像在没有管理员权限的情况下以与max-width属性类似的方式运行,您可以将一些HTML添加到内容的头部,从一些稳定的Web源导入JQuery并定义一个resize事件处理程序该文件。此事件应查询文档中的所有图片,并使用他们的naturalHeightnaturalWidth(代表每个图片的原始尺寸)及其父级宽度将其大小设置为方面正确的最佳适合,或者#34;自然&#34;尺寸,以较小者为准。

哪种解决方案的工作量较少取决于将正确的代码放在正确的位置的交易有多大,而不是在进行注册表更改时达成的协议有多大。