zoukankan      html  css  js  c++  java
  • 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_&amp;」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/Ming_5257/article/details/90144316

  • 相关阅读:
    BNUOJ 12756 Social Holidaying(二分匹配)
    HDU 1114 Piggy-Bank(完全背包)
    HDU 2844 Coins (多重背包)
    HDU 2602 Bone Collector(01背包)
    HDU 1171 Big Event in HDU(01背包)
    HDU 2571 命运 (入门dp)
    HDU 1069 Monkey and Banana(最长递减子序列)
    HDU 1160 FatMouse's Speed (最长上升子序列)
    HDU 2594 KMP
    POJ 3783 Balls --扔鸡蛋问题 经典DP
  • 原文地址:https://www.cnblogs.com/bruce1992/p/14782162.html
Copyright © 2011-2022 走看看