【问题标题】:Embed html in C# Forms在 C# 表单中嵌入 html
【发布时间】:2012-05-07 19:24:35
【问题描述】:

有没有办法将 HTML 嵌入到 Windows 窗体自定义用户控件中?我想创建一个在 .NET 4.0 应用程序中使用的轻量级控件,但由于它的内容可以更改,我认为使用 HTML 来布局它可能是最简单的。有没有办法在 Windows 窗体中实现这一点? C# 和 HTML 还有一些其他主题,但很确定不涉及创建解析 HTML 并显示它的控件。

谢谢

【问题讨论】:

  • 在 winform 应用程序中与 webbrowser 控件通信是一个 PITA,我会避免仅仅因为您希望布局可以更改而选择 HTML,动态加载控件会容易得多(在fly) 在运行时取决于配置

标签: c# html winforms


【解决方案1】:

您可以使用WebBrowser,但我建议不要走这条路。只需使用传统控件即可完成您需要的工作,如果可能的话,也许可以结合一点 GDI+。

【讨论】:

  • WebBrowser 是......挑剔。我支持“不是……那条路”。 WPF 有点“类似 HTML”,并且相对容易嵌入 WinForms。 (缺点(?)它仍然使用 WPF 堆栈。)
  • 不幸的是,这严格来说是一个 WinForms 应用程序。我的意思是我可以自己解析 HTML 并使用 GDI 或 D2D 或其他任何东西来呈现元素,但我想知道是否有开箱即用的东西可以解析 HTML 并呈现它,因为我想避免编写一个整体从头开始 DOM 解析器...
  • 就像我说的,WebBrowser。这是一个标准的 Windows 窗体控件。但除此之外 - 不,或者至少在我推出 BreezeCSS 之前不会。是什么东西如此复杂以至于值得标记?
  • 就像上面提到的杰里米;我正在寻找可以快速修改布局的东西,以及可以快速想出的东西。在运行时根据配置动态加载控件(如上所述)或解析 HTML 并自己渲染都是可行的,但需要一些时间......使用 WebBrowser 有什么问题?
  • 而且这种布局不能用标准控件来完成? FlowLayoutPanel 可能值得一试,但没有更多细节,我不能……具体。
【解决方案2】:

就易于使用和维护而言,WebBrowser 将是您的最佳选择。您可以通过访问 browser.Document.DomDocument 接口和事件来进一步控制内容本身。我不建议使用 GDI,因为从长远来看,维护和管理自定义渲染会很痛苦。

【讨论】:

  • 我同意 GDI 是最重要的,但是使用 webbrowser 控件是为了显示网页,如果您将它们用作用户控件,那么太多的业务逻辑最终会出现在表示层中 - 迷宫只是制作一个 web应用然后
  • @JeremyThompson:同意。但是,对于 SO 的大多数问题,您无法判断正在讨论的项目的规模和操作的局限性。我自己有时会求助于需要快速格式化内容的网络浏览器控件。有些项目不值得最佳实践。在其他情况下,我可能会因为这样说而被枪毙。
  • 感谢您的回复/提示。如上所述,时间是主要的瓶颈。我将尝试 WebBrowser 作为快速肮脏的第一次通过,然后重新评估一个更好/更清洁的解决方案。
【解决方案3】:

我一直在尝试做类似的事情并找到了awesomium。他们有一个 dotnet 和 mono wrapper 以及对整个行为的非常精细的控制。只要您的公司年收入低于 10 万,它也是免费的。

忘了提到它是一个基本上嵌入在应用程序中的浏览器,因此您不必担心用户没有安装它或其他任何东西,并且与 PC 和操作系统一致

【讨论】:

    猜你喜欢
    • 2016-10-04
    • 2023-04-06
    • 2019-09-12
    • 1970-01-01
    • 1970-01-01
    • 2010-10-09
    • 2011-01-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多