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 ...
随机推荐
- Spring Boot(二):Spring Boot中的配置参数
Spring Boot 配置参数 Spring Boot 帮助我们完成了许许多多的自动化配置 如果我们需要根据自己的需求修改配置 也是可以的 可以使用.properties 和 .yml 格式配置 这 ...
- 【LeetCode】66. 加一
66. 加一 知识点:数组: 题目描述 给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一. 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字. 你可以假设除了整数 0 ...
- Python+Requests+Bs4(解析)爬取某诗词信息(数据分析二)
1.环境安装 - 需要将pip源设置为国内源,阿里源.豆瓣源.网易源等 - windows (1)打开文件资源管理器(文件夹地址栏中) (2)地址栏上面输入 %appdata% (3)在这里面新建一个 ...
- 【codeforces1058】Vasya and Golden Ticket 枚举+暴力+模拟
#点击传送 题目描述 Recently Vasya found a golden ticket - a sequence which consists of nn digits a1a2-ana1a2 ...
- 跨域jsonp+jQuery+json+html动态生成表格
1.什么是跨域 浏览器对于javascript的同源策略的限制,例如a.cn下面的js不能调用b.cn中的js,对象或数据(因为a.cn和b.cn是不同域),所以跨域就出现了. 凡是拥有scr这个属性 ...
- CreateWindow() -- 创建普通的窗口
(1)函数原型 1 HWND CreateWindow( 2 LPCTSTR lpClassName, //pointer to register class name 3 LPCTSTR lpWin ...
- Python将字符串转化为对应类名的两种方法
way first: 1 from django.utils.module_loading import import_string 2 ValidationError = import_string ...
- Altium Designer 21.x中文版安装破解教程
Altium Designer 21.x是一款优秀的PCB设计工具,可以原理图设计.电路仿真.PCB绘制编辑.拓扑逻辑自动布线.信号完整性分析和设计输出等功能,为设计者提供了全新的设计解决方案,提高设 ...
- 模式识别课程大作业 Shopee 商品图像检索
大作业项目简介 在如今的信息科技时代, 带有拍照功能的移动设备如手机.相机等得到了极大的普及和流行, 各种各样的图片和视频可以随时随地获得, 并借助互联网快速传播, 这种趋势使得网络上的数字图片和视频 ...
- Docker未授权漏洞(2375)
漏洞验证 直接使用浏览器访问 http://ip:2335 http://ip:2335/version http://ip:2335/info docker -H tcp://ip:2375 ver ...