在C#中从RichTextBox中提取RTF字符串.Net6.0 WPF [已关闭]

wbgh16ku  于 2023-10-22  发布在  C#
关注(0)|答案(1)|浏览(130)

已关闭,此问题需要更focused。它目前不接受回答。
**想改善这个问题吗?**更新问题,使其只关注editing this post的一个问题。

25天前关闭
Improve this question
我正在尝试从RichTextBox中获取RTF文本。我用的是C# .Net6.0,WPF。
我需要从RichTextBox中获取RTF字符串并将其存储在一个变量中。这个变量在一个类中,这个类生成一个文件,RTF字符串应该在这个文件中。
RTF字符串应包含所有类似粗体、斜体和彩色的文本。当变量加载回RichTextBox时,它应该显示保存时的所有格式。
我知道如何提取纯文本,但不是RTF文本。RichTextBox.Rtf仅在WinForms中可用。搜索互联网只让我“如何从RichTextBox中获取纯文本”,但似乎没有其他人有这个问题,我有。
保存RTF字符串的变量是字符串。微软官方文档也没有帮助。
我试图搜索一个方法,显示我从RichTextBox的RTF字符串。我也在TextRange中搜索,在那里我从RichTextBox中获取纯文本,但似乎TextRange只显示纯文本。我发现了TextRange.保存(stream,DataRange. RTF),但这将字符串直接保存到文件中,而不是变量中。

6ju8rftf

6ju8rftf1#

要获取RTF格式的FlowDocument内容,可以使用以下扩展方法:

using System.IO;
using System.Text;
using System.Windows;
using System.Windows.Documents;

public static string RawRtf(this FlowDocument document)
{
    using (var stream = new MemoryStream())
    {
        // Select all the document content
        var range = new TextRange(document.ContentStart, document.ContentEnd);
        // Save to a MemoryStream
        range.Save(stream, DataFormats.Rtf);
        // Convert from stream to the string 
        return Encoding.ASCII.GetString(stream.ToArray());
    }
}

示例如何调用它(rtbRichTextBox的名称):

string rtf = rtb.Document.RawRtf();

测试截图:

相关问题