Сообщение WPF RichTextBox.Selection от 12.01.2023 8:31
Изменено 12.01.2023 8:55 dsalodki
WPF ReachTextBox.Selection
нужно получить конец выделения начиная с позиции которой заканчивается некоторое слово в выделенном тексте (1е совпадение) и заканчивая текущей позицией выделенного слова
код ниже как сейчас, но не правильный
код ниже как сейчас, но не правильный
origWord = origWord.Trim();
targetWord = targetWord.Trim();
TextRange textRange = Text.RichTextBox.Selection;
var index = textRange.Text.IndexOf(origWord);
string xaml;
using (var memoryStream = new MemoryStream())
{
textRange.Save(memoryStream, DataFormats.Xaml);
xaml = ASCIIEncoding.UTF8.GetString(memoryStream.ToArray());
}
var regex = new Regex($"\\b{origWord}\\b");
var newText = regex.Replace(xaml, targetWord, 1);
using (MemoryStream stream = new MemoryStream(ASCIIEncoding.UTF8.GetBytes(newText)))
{
Text.RichTextBox.Selection.Load(stream, DataFormats.Xaml);
}
var start = Text.RichTextBox.Selection.Start.GetPositionAtOffset(index + targetWord.Length);
var end = Text.RichTextBox.Selection.End;
Text.RichTextBox.Selection.Select(start, end);
WPF RichTextBox.Selection
нужно получить конец выделения начиная с позиции которой заканчивается некоторое слово в выделенном тексте (1е совпадение) и заканчивая текущей позицией выделенного слова
код ниже как сейчас, но не правильный
код ниже как сейчас, но не правильный
origWord = origWord.Trim();
targetWord = targetWord.Trim();
TextRange textRange = Text.RichTextBox.Selection;
var index = textRange.Text.IndexOf(origWord);
string xaml;
using (var memoryStream = new MemoryStream())
{
textRange.Save(memoryStream, DataFormats.Xaml);
xaml = ASCIIEncoding.UTF8.GetString(memoryStream.ToArray());
}
var regex = new Regex($"\\b{origWord}\\b");
var newText = regex.Replace(xaml, targetWord, 1);
using (MemoryStream stream = new MemoryStream(ASCIIEncoding.UTF8.GetBytes(newText)))
{
Text.RichTextBox.Selection.Load(stream, DataFormats.Xaml);
}
var start = Text.RichTextBox.Selection.Start.GetPositionAtOffset(index + targetWord.Length);
var end = Text.RichTextBox.Selection.End;
Text.RichTextBox.Selection.Select(start, end);