破宝

我是一块破破烂烂的宝贝石头。
随笔 - 85, 评论 - 1279, 引用 - 54

导航

工具

关于

自选精华版 RECOMMENDATIONS
留言板 GUESTBOOK

本人 blog 文章、图片及其他资源等,除另有声明外,均遵循以下原则向全球(当然包括朝鲜、古巴、利比亚等国)共享:

1。欢迎转载、复制、传播、引用,但转载、复制(包括但不仅限于作为参考资料复制到本地)、传播、引用同时必须在显著位置注明作者(破宝/percyboy)和文章原始 URL 地址等信息。但商业转载、复制、传播(尤指用于图书、光盘等媒体的部分或全部),须事先征得本人的许可。

2。文章以“现状”提供,不为由于使用本站资源而造成的任何损失而负责,仅提供力所能及的咨询和参考意见。

3。关于修改:允许您将本 blog 中的资源作为参考资料复制时的一定修改,但仍须保留作者和出处信息;其他情况下的修改(包括修改后再发布),须和本人确认许可。
 

标签

每月存档

广告



访客

 

现在的需求是:显示搜索结果时希望把用户输入的关键词加亮显示(比如显示为红色)。

如果是 HTML 里面的操作,大家有各种 HTML 标记可以实现这样的效果,简单的方法比如直接用“<font color="red">xxxxx</font>”将关键词包围。现在,是在 Windows 窗体中。

或许我们嵌入一个 Browser 控件能够轻松的实现这样的效果,但对于这个需求来说它或许有点过于笨重了。我们希望使用 RichTextBox 来显示这个效果。

但 RichTextBox 支持的是 rtf 格式,rtf 和 HTML 不是同源语言,风格相差很远,还是需要花不少功夫去钻研 RTF 的规范的。

这里给出一段写好的 RTF 转换代码,供有兴趣的人参考,不过这段代码只实现了加亮这一个需求,或许还不满足您的实际需要,但我只是想给你点参考而已。使用时,只需很少的几行的代码,如:

string original = @"How <red>are</red> you? 中文<red>测试</red>文本 日本<red>語</red>のテスト";
RtfRenderer rr = new RtfRenderer(original);
richbox.Rtf = rr.Rtf;

另外,windowsforms.net 站点上 Eric Voreis 公开了一个 Sample,可以将一部分常用的 HTML 标记(前提是已经按 XHTML 的要求完成了标记前后匹配的工作之后),转换为相应的 rtf 效果,很遗憾这个西方人没有考虑中文、日文等亚洲语言显示问题。不过你可以参考我的实现代码,解决这个小问题。

相关文章

Loading...

打印 | 张贴于 2004-12-17 09:58:00 | Tag:暂无标签

留言反馈

#re: 动态生成 rtf 并指定给 RichTextBox 控件 编辑
修改 RtfDocument.cs:
header = "{\\rtf1\\ansi\\ansicpg936\\deff0\\deflang1033\\deflangfe2052";

修改 RtfFontTable.cs:
public RtfFontTable()
{
//
// TODO: Add constructor logic here
//
fonttbl = "{\\fonttbl{\\f0\\fnil\\fcharset1 Times New Roman;}";
fonttbl+= "{\\f1\\fnil\\fcharset2 Kingsoft Phonetic Plain;}";
loadedFonts.Add("Times New Roman",0);
loadedFonts.Add("Kingsoft Phonetic Plain", 1);
numberOfFonts=1;//没有这行应该是源码的bug。
}
public int UseFont(string fontName)
{
if (loadedFonts.Contains(fontName))
{
return (int)loadedFonts[fontName];
}
else
{
fonttbl += "{\\f" + (++numberOfFonts) + "\\fnil\\fcharset1 " + fontName + ";}";
loadedFonts.Add(fontName, numberOfFonts);
return numberOfFonts;
}
}

应当可以解决中文显示和音标显示的问题。
2006-08-17 11:07:00 | [匿名用户:chinajuanbob]
#re: 动态生成 rtf 并指定给 RichTextBox 控件 编辑
请问,如何改变RichTextBox里面文本的行高?
就象Word一样,可以在<段落/行高?里面调整行间距?
非常感谢
2006-07-21 18:13:00 | [匿名用户:你好啊]
#re: 动态生成 rtf 并指定给 RichTextBox 控件 编辑
大哥!

我想把richtextbox当作一个多功能label用,请问如何在richtextbox的text属性中添加多样式的文本,和控制符(最好还能有图片)。

如不能实现,请问如何在代码中实现
2005-02-22 15:20:00 | [匿名用户:ojjzelllee]
#re: 动态生成 rtf 并指定给 RichTextBox 控件 编辑
chang
StreamReader reader = new StreamReader(new FileStream("..\\..\\readme.xml", FileMode.Open))
to
StreamReader reader = new StreamReader(new FileStream("..\\..\\readme.xml", FileMode.Open),Encoding.Default);

then it can support chinese!:)
2005-01-12 17:23:00 | [匿名用户:sunk]
#re: 动态生成 rtf 并指定给 RichTextBox 控件 编辑
rtf应该被doc代替了吧
2004-12-17 14:06:00 | [匿名用户:lin]
#re: 动态生成 rtf 并指定给 RichTextBox 控件 编辑
thaks
现在才知道richtextbox有这个功能哈哈
2004-12-17 12:34:00 | [匿名用户:lin]
对不起,目前本随笔不允许发表新评论.

Powered by: Joycode MVC Blogger System