【问题标题】:Best Way to Render HTML in WinForms application? [closed]在 WinForms 应用程序中呈现 HTML 的最佳方式? [关闭]
【发布时间】:2010-11-16 03:24:25
【问题描述】:

我有一个 WinForms 应用程序,在 .net 3.5 上运行。此应用程序动态生成 HTML,其中包括完整的文档,以及内联 CSS 样式表(在 head 元素内)。

我正在使用 WebBrowser 控件并将 browser.DocumentText 设置为我生成的 HTML,但这似乎没有正确地将样式应用于 body 元素(我在 CSS 中将 background-color 设置为 #000000,但背景仍然是白色的)。

我想知道 a) 是否有一些替代方法可以在 C# 中呈现相对简单的 HTML(即完全托管的 HTML 呈现器)或 b) 使用 WebBrowser 控件呈现 HTML 的最佳方法是什么,包括正确处理内联- css 并且不使用硬盘上的临时文件。

编辑: CSS-not-applying 问题是一个单独的问题。我已将我的实际 CSS 放在 CDATA 块中,这似乎导致它无法正确应用。现在已经解决了,但问题本身仍然存在。

【问题讨论】:

  • 仅仅因为标题中有“最好”这个词就关闭这个问题是愚蠢的!这是一个很好的问题,它帮助了我。

标签: c# html .net winforms webbrowser-control


【解决方案1】:

有关托管 HTML 渲染器,请参阅 GitHub 上的 HtmlRenderer

【讨论】:

  • 现在看起来很性感,准备试一试。
  • CodePlex 有一个更新的版本,似乎开发移到了那里。真是一个很棒的组件。
  • 这优于内部 WebBrowser,后者有额外的 COM 开销并且不能很好地与线程单元模型配合使用 [阅读:从 BackgroundWorker 线程启动时,我无法让 WebBrowser 工作]。而且组件只有200K!
【解决方案2】:

您可以考虑使用视图引擎。 大多数视图引擎都可以以独立的 api 方式工作

例如 NHaml 和 nvelocity 都可以单独使用

http://code.google.com/p/nhaml/

http://www.castleproject.org/others/nvelocity/index.html

我认为 Spark 也可以

http://dev.dejardin.org/

【讨论】:

  • 我认为这些不会有任何好处 - 据我了解,它们是从模板创建 HTML。我正在寻找在屏幕上呈现 HTML 的东西,也就是。浏览器。
【解决方案3】:

继续使用内置的 WebBrowser。另一个答案中的 HtmlRenderer 很棒,但会渲染图像。

【讨论】:

  • HtmlRenderer 已经更新,现在完全支持文本选择、复制粘贴等。仅供参考。
  • 我尝试添加 WinForms nuget 包,但是当我将 Html 面板添加到表单时,Visual Studio 崩溃了..
【解决方案4】:

我已经开发了您所要求的:“完全托管的 HTML 渲染器”,它将“在 C# 中渲染相对简单的 HTML”。它支持 CSS 的一个子集,您可以“在内联 CSS 样式表中指定(在 head 元素内)”。

详情请见the ModelText HTML control

【讨论】:

    猜你喜欢
    • 2019-02-16
    • 1970-01-01
    • 1970-01-01
    • 2010-11-06
    • 1970-01-01
    • 1970-01-01
    • 2018-12-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多