wpf 富文本编辑器richtextbox的简单用法
最近弄得一个小软件,需要用到富文本编辑器,richtextbox,一开始以为是和文本框一样的用法,但是实践起来碰壁之后才知道并不简单。
richtextbox 类似于Word,是一个可编辑的控件。结构图(来自网络)

我的主要用途是用来支持一个基于C#的考试系统,由于考试科目涉及到图片以及还有复杂的数学公式,所以,传统的textbox控件是不能同时支持图片和文字以及rtf格式的类型的,而richtextbox恰好可以支持。
难点1、 添加试题,将带有格式的文本输入进richtextbox,并存到数据库中。
二进制
这种带格式的文本内容是不能直接存到数据库中的,所以必须将其内容进行转换,转换成数据库支持的格式,首先就是想到了二进制,经过实践,通过将其内容转换成二进制文件是可以保存到数据库中的,但是存在一个问题,就是程序运行时,将带有图片的文本内容存到数据库中后,本次运行的过程中是可以读取出来的,但是关闭程序后, 再次运行,就会出现路径错误的错误。
base64String
经过一番探索,发现可以将其内容转换成base64String的格式,然后在存到数据库就可以实现自由存取。所以创建了以下的方法,用来将richtextbox中的内容转换成数据库可存储的格式
using System.IO;
//将富文本控件的内容转换成string类型
public string GetTextByRichBox(RichTextBox box)
{
//创建一个流
MemoryStream s = new MemoryStream();
//获得富文本中的内容
TextRange documentTextRange = new TextRange(box.Document.ContentStart, box.Document.ContentEnd);
//将富文本中的内容转换成xaml的格式,并保存到指定的流中
documentTextRange.Save(s, DataFormats.XamlPackage);
//将流中的内容转换成字节数组,并转换成base64的等效格式
return Convert.ToBase64String(s.ToArray());
}
将数据库中的数据转换回richtextbox可是别的内容的方法如下:
/// <summary>
/// 将数据库中的内容转换回richtextbox可识别的内容
/// </summary>
/// <param name="data">数据库取出的数据</param>
/// <param name="box">接收的richtextbox控件名称</param>
public void ShowTextToRichBox(string data,RichTextBox box)
{
MemoryStream s = new MemoryStream((Convert.FromBase64String(Convert.ToString(data))));
TextRange TR = new TextRange(box.Document.ContentStart, box.Document.ContentEnd);
TR.Load(s, DataFormats.XamlPackage);
}
————————————————
版权声明:本文为CSDN博主「LLLDa_&」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Ming_5257/article/details/90144316
wpf 富文本编辑器richtextbox的简单用法的更多相关文章
- 前端轻量级、简单、易用的富文本编辑器 wangEditor 的基本用法
1.富文本编辑器市面上有很多,但是综合考虑之后wangEditor是最易用的框架,推荐使用 首先进入官网 http://www.wangeditor.com 基本是2中方式引入: 使用CDN://un ...
- 富文本编辑器Quill(一)简单介绍
Quill是一个很流行的富文本编辑器,github上star大约21k: github:https://github.com/quilljs/quill/ 官网: https://quilljs.co ...
- UEditor富文本编辑器简单使用
UEditor富文本编辑器简单使用 一.下载地址:https://ueditor.baidu.com/website/ 官网中并没有 python 版本的 UEditor 富文本编辑器,本文简单介绍 ...
- WPF开发时光之痕日记本(一)——富文本编辑器
本篇给大家推荐一个 WPF 版的富文本编辑器,SmithHtmlEditor,具体网址大家可以找一找,我在这个编辑器的基础上修改了界面,增加了一些功能,模仿了kindeditor 的界面,鉴于自己现在 ...
- summernote富文本编辑器的使用
最近在开发一个微信公众号的后台,微信公众号编辑的文章一直没有得到很好地适应,大多数人也是在其他的编辑软件中编辑好之后直接去复制到微信公众平台中,考虑到复制后会排版出现问题,所以给大家推荐一款很不错的W ...
- react-quill 富文本编辑器
适合react的一款轻量级富文本编辑器 1.http://blog.csdn.net/xiaoxiao23333/article/details/62055128 (推荐一款Markdown富文本编辑 ...
- 富文本编辑器UEditor自定义工具栏(三、自定义工具栏功能按钮图标及工具栏样式简单修改)
导读 富文本编辑器UEditor提供丰富了定制配置项,如果想设置个性化的工具栏按钮图标有无办法呢?答案是肯定的!前两篇博文简要介绍了通过将原工具栏隐藏,在自定义的外部按钮上,调用UEditor各命令实 ...
- 关于富文本编辑器ueditor(jsp版)上传文件到阿里云OSS的简单实例,适合新手
关于富文本编辑器ueditor(jsp版)上传文件到阿里云OSS的简单实例,适合新手 本人菜鸟一枚,最近公司有需求要用到富文本编辑器,我选择的是百度的ueditor富文本编辑器,闲话不多说,进入正 ...
- 原生JS实现简单富文本编辑器2
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
随机推荐
- EXCEL中的多个条件同时成立写法
=IF(AND($B2>0,$C2>0,$D2>0,$E2>0),(($B2*1000/$C2/60/$D2)*$E2),0)点击F2,粘贴上边的公式选择F2到f200ctrl ...
- C语言:整数取值范转及溢出
short.int.long 是C语言中常用的三种整数类型,分别称为短整型.整型.长整型.在现代操作系统中,short.int.long 的长度分别是 2.4.4 或者 8,它们只能存储有限的数值,当 ...
- 【LeetCode】389.找不同
389.找不同 知识点:哈希表.抵消思想: 题目描述 给定两个字符串 s 和 t,它们只包含小写字母. 字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母. 请找出在 t 中被添加的字母. ...
- React组件三大属性之 refs
React组件三大属性之 refs refs属性 1) 组件内的标签都可以定义ref属性来标识自己 a. <input type="text" ref={input => ...
- ES6 数组Arrary 常用方法
ES6 数组Arrary 常用方法: <script type="text/javascript"> // 操作数据方法 // arr.push() 从后面添加元素,返 ...
- 前端之html基础演示
1.本地服务:下载淘宝镜像node.js :https://npm.taobao.org/mirrors/npm :本次下载的版本是 v10.0.0 2.下载成功后,到cmd窗口输入 node -v, ...
- Odoo的附件大小限制
Odoo使用binary类型来保存附件数据,可以直接支持附件数据的上传.但是在实际使用中,有可能遇到附件文件大小超过限制的情况,如下图: 但是ERP定制过程中难免会遇到客户确实需要上传超大附件,那么怎 ...
- odoo学习笔记create函数
@api.multi def create_order_sale(self): """""" stage_list = [] for ord ...
- 第十二篇 -- 如何向MFC对话框添加菜单
1.如何在基于对话框的MFC中添加菜单:https://blog.csdn.net/u012273127/article/details/71293088 步骤: 资源文件处右击Add Resourc ...
- python进程间的通讯实现
1:进程间通讯的方法:apply_async()非阻塞式通讯 apply()阻塞式通讯 2:使用Queue实现对Process创建的进程间通讯, Queue本身是一个消息队列程序,Queue常 ...