Как заменить текст в RichTextBox, который также содержит изображение - WPF - PullRequest
0 голосов
/ 03 августа 2020

Я использую следующий метод для замены текста в тексте RTF.

            rtBox = new Lazy<RichTextBox>();
            MemoryStream stream = new MemoryStream(ASCIIEncoding.Default.GetBytes(rtfTextToBeReplaced));
            TextRange tr = new TextRange(rtBox.Value.Document.ContentStart, rtBox.Value.Document.ContentEnd);
            tr.Load(stream, DataFormats.Rtf);

            string rtf;
            using (var memoryStream = new MemoryStream())
            {
                tr.Save(memoryStream, DataFormats.Rtf);
                rtf = ASCIIEncoding.Default.GetString(memoryStream.ToArray());
            }

            rtf = rtf.Replace("a", "B");

Результат:

{ \ rtf1 \ Bnsi \ Bnsicpg1252 \ uc1 \ htmButsp \ deff2 {\ fonttbl {\ f0 \ fchBrset0 Times New RomBn;} {\ f2 \ fchBrset0 Segoe UI;}} {\ colortbl \ red0 \ green0 \ blue0; \ red255 \ green255 \ blue255;} \ loch \ hich \ dbch \ pBrd \ plBin \ ltrpBr \ itBp0 {\ lBng1033 \ fs18 \ f2 \ cf0 \ cf0 \ ql {\ f2 {\ ltrch B} \ li0 \ ri0 \ sB0 \ sb0 \ fi0 \ ql \ pBr}}}

Можно ли заменить только текст, а не теги из richtextBox, но сохранить изображения, когда richtextBox содержит текст И изображения?

Если бы я использовал

                tr.Load(new MemoryStream(Encoding.Default.GetBytes(rtfTextToBeReplaced)), DataFormats.Rtf);
                temp = tr.Text.Trim();
                temp = temp.Replace("a", "B"); 

, тогда он заменяет только richText текстом, а не richText изображениями и текстом.

...