3

我一直在处理从 XML 文件中获取的 HTML 字符串。我正在尝试找出一种在带有格式的富文本框中显示这些字符串的方法。所以例如

 <p>This is a <strong>HTML</strong> string from the <em>XML</em> file</p>

或者

 <p>This is our <span style="text-decoration: underline;">response</span></p>

应该像这样显示在richtextbox中:

这是来自XML文件的HTML字符串

这是我们的回应 <<-- 这应该加下划线

我不太确定该怎么做。而且我不太确定 WebBrowser 类将如何在这里工作,因为 HTML 字符串是单独的,并且不会形成完整的 HTML 文件。

此外,一旦在richtextbox 中进行任何更改,我需要一种方法来反转格式(HTML 编码),因为它们将被写回XML 文件。

我有办法做到这一点吗?我真的可以使用帮助。我难住了。

编辑:

如果有帮助,这是我从中获取字符串的 XML 部分(类似于此)。

<Field id="13598" type="1">&lt;p&gt;&lt;strong&gt;This &lt;/strong&gt;is our &lt;em&gt;response&lt;/em&gt;&lt;/p&gt;</Field>

我基本上是在尝试允许用户编辑和保存字段中的字符串。

编辑2:

我已经设法使用 WebBrowser 控件来满足我的要求,但我面临一个新问题。看看这里: 使用 WYSIWYG 编辑器编辑 HTML 任何帮助将不胜感激!

4

3 回答 3

3

我已经使用WYSIWYG HTML editor解决了它。但是,我面临一个新问题,如果有人可以提供帮助,那就太好了!

这是我的新问题: Editing HTML with a WYSIWYG Editor

于 2012-11-16T04:00:19.887 回答
1

您是否使用扩展 RTB 来显示 html,因为据我从 CodeProject 站点了解,.NET RichTextBox 控件仅允许您使用 RTF 代码或纯文本文件保存和加载文件。因此,您需要扩展 RTB 以获取该功能。

这是链接 - RTB 以保存 Html

但是,如果您可以避免它并将 xml 直接加载到 RTB,它会更好,因为工作代码在这里

有关 html 格式化代码到 RTB 的更多信息,请查看此处

于 2012-11-09T10:00:25.327 回答
1

Winz,我对你的要求有点迷茫。

根据您的评论...

"I'm trying to display them in a RTB as how they'd appear in on a Web Page"

  1. 您希望将 HTML 标记呈现为实际页面,例如, <img />标签呈现为实际图像。

  2. 您希望将 HTML 标记呈现为文本,就像您要使用各种语法颜色“查看页面源代码”一样

问题...

HTML 标记和RTF 规范有很大不同,因此您需要将标记转换为 RTF 以使 RichTextBox 显示 HTML,因为页面会出现!

为了解决您的问题...

  1. 要将 .NET 中的 HTML 标记呈现为网页,您可以使用内置的 WebBrowser 控件。此控件在后台使用微软的 IE 引擎,但请注意,它对 HTML5 和 CSS3 等某些标准不是很友好。您可以使用 ( IIRC )浏览器功能控件改进它呈现页面的方式

  2. 要将 HTML 标记呈现为文本,就像您要“查看页面源代码”时出现的那样,使用语法着色,您可以在一定程度上使用 RichTextBox 。是一个使用 XML 的示例,但是由于 XML 和 HTML 非常相似,您可能可以修改 HTML 语法呈现的解决方案。

注意:语法高亮基本上只是渲染文本以​​对某些事物使用某些颜色,例如标签可能是红色的,而属性可能是蓝色的,而注释可能是绿色的。

这是另一个语法荧光笔示例:

http://dotnet-csharp-programming.blogspot.co.uk/2010/04/xml-highlighting-in-rich-textbox.html

其他解决方案...

要将 HTML 内容呈现为页面,您可能会考虑为 .NET 找到第 3 方浏览器控件。我知道有一个用于 FireFox 渲染引擎,也可能有一个用于 Chrome。是一篇关于替换内置 WebBrowser 控件的 stackoverflow 文章。

对于呈现 HTML 语法,您还可以考虑使用Scintilla.NET或者您可以购买商业产品,例如ActiPro 的语法编辑器

于 2012-11-12T09:28:33.717 回答