internal string Select(RichTextBox rtb, int index, int length)
{
TextRange textRange = new TextRange(rtb.Document.ContentStart, rtb.Document.ContentEnd);
if (textRange.Text.Length >= (index + length))
{
TextPointer start = textRange.Start.GetPositionAtOffset(index, LogicalDirection.Forward);
TextPointer end = textRange.Start.GetPositionAtOffset(index + length, LogicalDirection.Backward);
rtb.Selection.Select(start, end);
rtb.Selection.ApplyPropertyValue(TextElement.BackgroundProperty, new SolidColorBrush(Colors.LightBlue));
}
return rtb.Selection.Text;
}
選択したテキストの背景色を変更するために ApplyPropertyValue が呼び出されると、最初はうまく機能しますが、2 回目に呼び出されたときに選択したテキスト セグメントの背景色が適切に調整されません。これは、関数が呼び出された後にドキュメントのオフセットが何らかの形で台無しになっていることに関係していると思われます。
これを修正する良い方法は何ですか?