显示html格式的字符串

时间:2010-01-16 03:05:33

标签: c# html winforms string console

我想从C#控制台应用程序中显示一个包含html代码的字符串(主要用于格式化目的,如斜体,粗体,缩进,颜色等)。

我认为我不需要使用WebBrowser类,因为不会有任何类型的导航。

1)最简单的方法是什么?

2)是否可以使用hmtl格式化在控制台中显示它?

感谢

3 个答案:

答案 0 :(得分:2)

控制台中不支持html。您可以设置控制台的前景色和背景色,但不能使用斜体或粗体字体。最好的情况是,您可以编写一个html解释器(或者使用System.Xml命名空间中的类进行修改)以允许您在控制台中使用颜色。

听起来你实际上可能正在使用Winforms,因为你引用了WebBrowser控件。如果是这样,您可以尝试使用只读RichTextBoxWebBrowser控件,或者如果您需要一个绝对轻量级的解决方案,您可以实现自己的控件来处理您需要的html部分。

答案 1 :(得分:1)

从性能角度来看,使用现有的HTML呈现引擎会非常昂贵 - 尤其是内存。

您面临的另一个问题是大多数HTML格式不会转换为控制台 - 您实际可用的唯一效果是前景色和背景色。

你最好的办法就是自己编写一个简单的解析器。您需要决定如何使用控制台颜色来解释粗体和斜体等内容。

由于您只需要处理两个可能的三个HTML标记,因此解析应该非常简单,忽略其他HTML标记的逻辑应该非常简单。

注意,HTML不是常规语言,因此您无法有效地使用正则表达式进行解析。我会推荐一个简单的递归式解析器 - 这些都是直接实现的。您也可以编写一个状态机,但它需要有一些递归或堆栈语义来进行校正。

答案 2 :(得分:0)

如果需要,您可以使用HTML Control进行渲染。

你只需将它放在Windows窗体上,它就会包装MSHTML,为你做渲染。

请记住,HTML呈现并不容易。 Gecko,WebKit和MSHTML是巨大的代码库。你最好使用其中一种,而不是试图自己动手。