【问题标题】:Winforms WebBrowser set maximum content widthWinforms WebBrowser 设置最大内容宽度
【发布时间】:2016-01-21 10:44:02
【问题描述】:

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

This is a test
message, that
has no other
purpose

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

【问题讨论】:

  • 你看过mdsn吗? msdn.microsoft.com/en-us/library/… 有一个 width 属性,您可以将其设置为屏幕/表单的宽度
  • 根据需要添加 CSS? wb.Document.Body.Style = "overflow-y:scroll;"; ?
  • @jbutler483 我只能找到控件的尺寸,我是不是遗漏了什么?
  • @AlexK。 ScrollBarsEnabled 设置为 false 时滚动条不会显示。并且将属性设置为 true,x 轴是可见的。
  • 我一定是误会你了,你能不能澄清一下这个问题?我了解到您想扩展控制?

标签: c# html css winforms


【解决方案1】:

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

但是,有一个警告。 WebBrowser 的默认渲染器(基于 IE v6.1)不支持 max-width 属性(根据 W3schools 的文档,IE 7 首次完全支持)。这将是比width 更可取的选项,因为它告诉浏览器在必要时将大小调整为更小以适应大小,但不会像width: X% 那样强制图像大于实际大小。无论您的“显着尺寸”阈值是多少,该条下方的图像都会在小窗口尺寸下导致水平滚动头痛,因为它不会调整大小,而该条上方的图像会看起来很可笑窗口大小,因为它确实会调整大小。

有一种方法可以强制 IE 通过 Windows 注册表逐个应用程序使用更现代的渲染器,但这有点麻烦,因为注册表更改需要提升的用户权限,这会触发 UAC 提示(以及您的最终用户可能没有管理权限)。最好让安装程序在安装时为您执行一些自定义操作,或者如果您在美国公司,请让管理员通过组策略推送注册表脚本(对于任何电脑)。

要使图像在运行时以类似于 max-width 属性的方式运行而无需管理员权限,您可以在内容的头部添加一些 HTML,从一些稳定的 Web 源导入 JQuery 并定义一个 resize 事件处理程序文件。此事件应查询文档中的所有图像,并使用它们的 naturalHeightnaturalWidth(代表每个图像的原始大小)及其父级的宽度将它们的大小设置为宽高比正确的最佳拟合,或“自然" 尺寸,以较小者为准。

哪种解决方案的工作量更少取决于将正确的代码放在正确的位置最终有多大的意义,与进行注册表更改的意义有多大。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-01
    • 1970-01-01
    相关资源
    最近更新 更多