WPF RichTextBox изменить Selection
От: dsalodki Беларусь http://dsalodki.wix.com/resume
Дата: 08.11.22 12:25
Оценка:
есть код ниже, но он не работчий — Target.RichTextBox.Selection.Start.GetPositionAtOffset(index + targetWord.Length)
как сделать что бы после замены первого слова Selection рендж уменьшался (исклбючал первое слово)?


        private void ReplaceWord(string origWord, string targetWord)
        {
            TextRange textRange = Target.RichTextBox.Selection;
            var index = textRange.Text.IndexOf(origWord);

            string rtf;
            using (var memoryStream = new MemoryStream())
            {
                textRange.Save(memoryStream, DataFormats.Xaml);
                rtf = ASCIIEncoding.UTF8.GetString(memoryStream.ToArray());
            }

            var regex = new Regex($"\\b{origWord}\\b");
            var newText = regex.Replace(rtf, targetWord, 1);

            using (MemoryStream stream = new MemoryStream(ASCIIEncoding.UTF8.GetBytes(newText)))
            {
                Target.RichTextBox.Selection.Load(stream, DataFormats.Xaml);
            }

            var start = Target.RichTextBox.Selection.Start.GetPositionAtOffset(index + targetWord.Length);
            var end = Target.RichTextBox.Selection.End;
            Target.RichTextBox.Selection.Select(start, end);
        }
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.