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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM