RichTextBox中的HTML格式

时间:2012-11-09 09:47:38

标签: c# html xml formatting richtextbox

我一直在处理从XML文件中获取的HTML字符串。我试图想出一种方法来在带有格式的richtextbox中显示这些字符串。 所以 e.g。

 <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 字符串

这是我们的回复&lt;&lt; - 这应该加下划线

我不太清楚如何解决这个问题。而且我不太确定WebBrowser类如何在这里工作,因为HTML字符串是单独的,并且不会形成完整的HTML文件。

此外,我需要一种方法来反转格式化(HTML编码)一旦在richtextbox中进行任何更改,因为它们将被写回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>

我基本上试图允许用户在Field中编辑和保存字符串。

编辑2:

我设法使用WebBrowser控件来满足我的要求,但我遇到了一个新问题。看看这里: Editing HTML with a WYSIWYG Editor 任何帮助将不胜感激!

3 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

您是否使用扩展RTB来显示html,因为据我所知,从CodeProject网站,.NET RichTextBox控件只允许您使用RTF代码或纯文本文件保存和加载文件。因此,您需要扩展RTB才能获得该功能。

这是链接 - RTB to save Html

但是如果你可以避免它并将xml直接加载到RTB,那么它的工作代码就好here

有关RTB格式化代码的更多信息,check here

答案 2 :(得分: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标记呈现为文本,如果您使用各种语法颜色“查看页面源”时将其显示

  3. 问题......

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

    解决您的问题......

    1. 要在.NET中将HTML标记呈现为网页,您可以使用内置的WebBrowser控件。此控件在后台使用Microsoft的IE引擎,但要注意,它对某些标准(如HTML5和CSS3)不是很友好。您可以使用( IIRC browser feature controls

    2. 来改善呈现页面的方式
    3. 要将HTML标记呈现为文本,如果您使用语法着色来“查看页面源”,则可以使用RichTextBox 到范围Here是使用XML的示例,但由于XML和HTML非常相似,因此您可以修改HTML语法呈现的解决方案。

    4. 注意:语法高亮基本上只是渲染文本以​​使用特定颜色的某些颜色,I.E。标签可能为红色,而属性可能为蓝色,注释可能为绿色。

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

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

      其他解决方案......

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

      为了呈现HTML语法,您可能还会考虑使用Scintilla.NET,或者您可以购买商业产品,例如ActiPro's Syntax Editor