彻底解决RichTextBox中表格不能折行的问题

来源:百度文库 编辑:神马文学网 时间:2024/04/28 16:57:48
项目碰到需要使用RichTextBox空间显示简单的word文档,进行简单操作.结果发现对表格的回车不好实现,去网上搜了下,还真有高手把它给解决了.呵呵,感谢下,转来看看
转自:http://blog.sina.com.cn/s/blog_505643f20100au22.html
[正文]
数据库编程中,有时要保存一些复杂的文档,如果用HTML,可以保存文档的格式,但文档中的图片却要单独存放,比较麻烦。如果用RTF格式的话,就可以将所有内容存为一个整体,放到数据库中。但vs自带的RICHTEXTBOX控件,在处理表格时,如果单元格中的内容太多,不会自动折行,郁闷。打开写字板看看,人家是可以的,奇怪了。
上网查了一下,说写字板用的可能是msftedit.dll,而不是riched20.dll。我试着把 system32目录下的msftedit.dll复制一份,改名成riched20.dll,替换原有的文件,试一试,还是不行。我想以前VB编程的时候也有一个COM的richtextbox,不知道还行不行,试一下,行了!太高兴了!但再打开word,文档不能可存,提示“内存不足,是否保存为挽救的文档”,显示是riched20.dll被替换了的缘故,恢复了该文件,word就正常了。
看来这是一个矛盾。我“灵机一动”,将msftedit.dll复制到应用程序目录下,改名为riched20.dll,运行,正常!
归结起来,有两点:
1、 不用vs自带的richtextbox 控件,而是用com的richtextbox组件(即windows richtextbox control (sp4)  richtx32.ocx 好像是这个文件名,在此system32目录下,没有话,到装了vb的机器上copy一个);
2、将msftedit.dll复制到应用程序目录下,改名为riched20.dll。如果你没有msftedit.dll文件,到装了windows xp或windows 2003的机器上复制一份。
===============================================
以上内容结果测试未必实用。
不过我们可以沿着该思路将问题解决得更透彻,我采用的方法是在系统目录下搜索riched20.dll文件,结果在我的计算机上搜到了多个版本的riched20.dll:
1、【C:\同花顺核新】下的riched20.dll,版本Richedit Version 3.0,测试无效;
2、【C:\Program Files\Tencent\RTXC】下的riched20.dll,版本Richedit Version 3.1,测试无效;
3、【C:\Program Files\Common Files\Microsoft Shared\Office10】下的riched20.dll,版本Richedit Version 4.0,测试OK;
4、【C:\Program Files\Common Files\Microsoft Shared\Office11】下的riched20.dll,版本MsftEdit Version 5.0,测试OK;
5、【C:\Program Files\Common Files\Microsoft Shared\Office12】下的riched20.dll,版本Richedit Version 6.0,测试OK;
6、【C:\Program Files\Tencent\QQ\Bin】下的riched20.dll,版本MsftEdit Version 5.0,测试OK。
结论:
*****在system32目录下的riched20.dll是Richedit Version 3.0(Richedit Version 3.1版本的也不行),只要找到一个Richedit Version 4.0或以上版本的riched20.dll或者MsftEdit Version 5.0或以上版本的riched20.dll即可!
*****将适用的richtextbox组件:riched20.dll制到应用程序目录下解决问题。