基于.net平台下的richtextbox控件,封装了几乎所有的rtf文档的功能,可以完全基于此控件来编写一个强大的文本编辑器.也许你会想,richtextbox控件的所有功能早就在m$ word下实现了,而且人家的软件做的那么好,何必自己再去费神开发一个文本编辑器呢?其实,我们做程序并不都是为了实用性,通过做一个程序,哪怕只是个简单的计算器,也能学到不少知识的.何况,你可以用richtextbox控件实现一个word没有的功能——把一个特定的文本锁定使在解锁前无法对其进行任何更改~呵呵,你试过了吗?
【程序编程相关:Rational Rose和UML可视化】 【推荐阅读:将记录集输出到 Excel 模板】你一定会很满意这个功能的,因为richtextbox可以自行阻止用户对已锁定的文本进行任何更改,而你不需要再添加任何多余的代码(至少大多数情况下是如此的).但是无论控件的功能封装得多好,它的智商还是有限,比如当你试图在你的软件里实现查找替换文本功能时,richtextbox呆头呆脑的特性就暴露无遗了——一旦试图对已锁定的文本进行替换,文件的指针就会被强行退回到该被锁定的文本的前一个未锁定的字符上,然后继续下一步,继续再次被退回……于是你的程序就这样陷入了死循环中,就听见你那cpu狂转呀…… 【扩展信息:离开IDE的日子...(附补记)】 于是我们得亲自教导一下richtextbox了,让它知道怎样聪明地处理锁定文本的替换问题.我们的目标是,能够让richtextbox的被保护文本不被替换并保证指针顺利前进,并在替换完成后通知用户被替换的文本有多少处以及被保护而无法替换的文本有多少处. 下面是我提供的解决方案 : -> if myreplaceform.showdialog = dialogresult.ok then ´这两个变量记录要被替换的文本与替换成的文本 dim findtext as string = myreplaceform.textboxfind.text dim replacetext as string = myreplaceform.textboxreplace.text ´此变量用于标记是否找到了被锁定的文本 dim protectedthistimefound as boolean ´此变量用于标记被替换的数量 dim replacecount as integer ´此变量用于标记被保护的文本的数量 dim protectedcount as integer ´以下是替换时在文档内移动的指针 dim nextpos as integer ... 下一页