2014-10-02 194 views
0

有没有像最大内容宽度一样强制WebBrowser的方法?我想显示html内容(全部只是样式文本),没有水平滚动,只能垂直滚动。所以我们可以说一个消息This is a test message, that has no other purposeWinforms WebBrowser设置最大内容宽度

This is a test 
message, that 
has no other 
purpose 

会显示,宽度垂直滚动条的存在showen如果需要的话。

+0

你看过mdsn吗? http://msdn.microsoft.com/en-us/library/system.windows.forms.webbrowser(v=vs.110).aspx有一个宽度属性,您可以设置为您的屏幕/窗体的宽度 – jbutler483 2014-10-02 16:04:15

+1

添加CSS根据需要? 'wb.Document.Body.Style =“overflow-y:scroll;”;'? – 2014-10-02 16:07:44

+0

@ jbutler483我能找到的所有东西都是控件的尺寸,我错过了什么? – pikausp 2014-10-02 16:15:36

回答

0

WebBrowser支持一些CSS样式属性,您可以将其作为内联样式插入到内容的<head>部分。你想要的那个是width;把它设置为一个默认的正文类的百分比(可能介于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(代表每个图像的原始尺寸)及其父宽度将它们的尺寸设置为方向正确的最佳拟合或“自然”尺寸更小。

哪个解决方案的工作量少取决于将正确的代码放在正确的位置上的交易规模有多大,与获取注册表更改的交易规模有多大有关。