在 WinForms 应用程序中呈现 HTML 的最佳方式? [关闭]
Posted
技术标签:
【中文标题】在 WinForms 应用程序中呈现 HTML 的最佳方式? [关闭]【英文标题】:Best Way to Render HTML in WinForms application? [closed] 【发布时间】: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 块中,这似乎导致它无法正确应用。现在已经解决了,但问题本身仍然存在。
【问题讨论】:
仅仅因为标题中有“最好”这个词就关闭这个问题是愚蠢的!这是一个很好的问题,它帮助了我。 【参考方案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。
【讨论】:
以上是关于在 WinForms 应用程序中呈现 HTML 的最佳方式? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
在 WinForms WebBrowser 控件中设置常规文本大小选项
一个好的 html 功能 Richedit 替代 winforms? [关闭]