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);
        }

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LLLDa_&

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值