選択する特定のテキストのインデックスと長さ(またはEndIndex)のみが指定されている場合、RichTextBoxのWPFバージョンでこれをどのように実行しますか?
これは、Textbox.Select(startIndex、Length)を呼び出すことができるため、Textboxで非常に実行可能ですが、RTBで同等のものは表示されません。
編集:私は選択をするための答えを見つけました
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);
}
return rtb.Selection.Text;
}
ただし、選択後に行を強調表示しようとすると、次のようになります。
rtb.Selection.ApplyPropertyValue(TextElement.BackgroundProperty, new SolidColorBrush(Colors.LightBlue));
強調表示機能は、最初の試行でのみ機能し、2回目の試行後に中断します。誰もがこれの理由を知っていますか?