簡體   English   中英

WPF RichTextBox 在按下“Enter”鍵時清除了第一行文本

[英]WPF RichTextBox cleared the firstline text when pressing the 'Enter' Key

我有一個 WPF 項目(帶有 MVVM Light),其中包含一個帶有ToolbarRichTextBox控件,如下圖所示在此處輸入圖片說明

我嘗試將格式化文本(用戶可以將富文本框內容樣式更改為“粗體”、“斜體”、“下划線”或增加或減小字體大小)到 sql lite 數據庫。

我正在使用 TextRange 類來捕獲RichTextBox內容。

 /* Get Richtext box text. */
 TextRange range;
 range = new TextRange(((FlowDocument)document).ContentStart,
                      ((FlowDocument)document).ContentEnd);
 /* Get Richtext box text. */

但如果文本為粗體或斜體,則不會捕獲正確的文本。 我在谷歌上搜索了很多小時,但找不到滿足我要求的正確方法。 如果有人有想法,請提供建議。

我不知道與富文本框屬性相關的格式數據存儲在哪里,但 TextRange.Text 屬性只是一個原始文本字符串。

我的方法是提取原始 RTF 數據並相應地保存/加載它。 這還具有能夠在任何其他富文本編輯器(如 Microsoft Word)中打開的優點。

要獲得 RTF 字符串表示,您可以使用以下代碼:

var ms = new MemoryStream();
var doc = RichTextBox.Document;
var range = new TextRange(doc.ContentStart, doc.ContentEnd);
range.Save(ms, DataFormats.Rtf);
string rtfString = ASCIIEncoding.Default.GetString(ms.ToArray());

//You can then save this string to the database or whatever you want...

並將 RTF 字符串加載回 RichTextBox,您可以使用此代碼。

string rtfText = LoadTextFromDatabase() //However you read the saved string..
var ms = new MemoryStream(ASCIIEncoding.Default.GetBytes(rtfText));
RichTextBox.Selection.Load(ms, DataFormats.Rtf);

希望這會有所幫助,並且是適合您的解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM