关于RichTextBox所见即所得(WYSIWYG)实现探讨,及问题
一、设计想法和目标,RichTextBox控件基础上开发,实现类似word所见即所得的编辑能力。
二、目前实现本人引用“ExtendedRichTextBox.cs”拓展的RichTextBox组件,可以实现在RichTextBox上对文本进行字体、字体大小、颜色、对齐方式的调整等等,但不能称作“所见即所得”。微软的《如何将 RichTextBox 控件的所见即所得的打印设置》 http://support.microsoft.com/kb/146022/zh-cn 也仅是做到这一步。
通过设置RichTextBox的Width和Height使其与页面的Width和Height一致(如下图)
也仅仅视觉上看类似于word,在进行打印预览时出现,打印预览出来的排版效果和实际在RichTextBox中的排版效果不一致。有错位现象,后尝试调整RichTextBox控件的Width值,也许会好些,但随后换种字体及大小同样会出现这种现象。
三、寻找问题根源:这个问题纠缠和很久,起初以为是“ExtendedRichTextBox.cs”的问题,后调整了一些代码依然如此。后对着Word及Tx TextControl Word(一个很成功的第三方文本编辑控件)发现在RichTextBox编辑文字和Word编辑文字有很大区别,这个区别导致RichTextBox排版错位。如下图:上半部分是RichTextBox编辑的文字内容,下半部分是打印预览显示的文字内容。同种字体和大小汉字和字母数字错位幅度有很大的不同。
尝试换字体和大小都有同样的差别,只是差别的大小不同,但word中不会出现这样现象。