В настоящее время работаю над проектом, в котором я пытаюсь выделить слова в richtextbox.проблема, с которой я сейчас сталкиваюсь, заключается в том, что я могу выделить только 1 слово, и если нужно выделить больше слов, функции не работают.он имеет какое-то отношение к указателям, но я не нашел решения для него, поскольку он довольно специфичен
Функция в настоящее время
public void HighlightText(RichTextBox richTextBox, int startPoint, int endPoint, Color color)
{
TextPointer pointer = richTextBox.Document.ContentStart;
TextPointer start = null, end = null;
int count = 0;
while (pointer != null)
{
if (pointer.GetPointerContext(LogicalDirection.Forward) == TextPointerContext.Text)
{
if (count == startPoint) start = pointer.GetInsertionPosition(LogicalDirection.Forward);
if (count == endPoint) end = pointer.GetInsertionPosition(LogicalDirection.Forward);
count++;
}
pointer = pointer.GetNextInsertionPosition(LogicalDirection.Forward);
}
if (start == null) start = richTextBox.Document.ContentEnd;
if (end == null) end = richTextBox.Document.ContentEnd;
TextRange range = new TextRange(start, end);
range.ApplyPropertyValue(TextElement.BackgroundProperty, new SolidColorBrush(color));
}
Хотя эта функция работает, когда я ее вызываювремя.Он не работает во второй раз, когда я его называю.
HighlightText(textToWrite, 0, 5, Color.FromRgb(255, 0, 0));
HighlightText(textToWrite, 6, 11, Color.FromRgb(255, 255, 0));
HighlightText(textToWrite, 12, 17, Color.FromRgb(255, 0, 0));
Если я вызываю только один из этих методов вместо 3, он работает так, как я хочу.я думаю, что это как-то связано с символами в выделении, но я не знаю, как обойти это.Если у кого-нибудь есть обходной путь / исправление для меня, пожалуйста, дайте мне знать.