Wenn Sie nur einen Index und eine Länge (oder einen EndIndex) für einen bestimmten zu wählenden Text erhalten, wie führen Sie dies in der WPF-Version von RichTextBox durch?Auswählen von RichTextBox-Text mit einem Index und einer Länge
Dies ist sehr in Textbox möglich, wie Sie Textbox.Select aufrufen können (startIndex, Länge), aber ich sehe nichts Äquivalentes in RTB.
Edit: Ich habe die Antwort auf Herstellung einer Auswahl
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;
}
jedoch gefunden, wenn ich versuche, um die Linie zu markieren, nachdem die Auswahl getroffen wurde:
rtb.Selection.ApplyPropertyValue(TextElement.BackgroundProperty, new SolidColorBrush(Colors.LightBlue));
Die Hervorhebung Funktion funktioniert nur auf den ersten Versuch und bricht nach dem zweiten Versuch. Weiß jemand den Grund dafür?
Die Select-Methode nimmt in zwei Textzeiger und ich habe nur bekam ein Index und eine Länge, mit denen zu arbeiten, die beide ganzzahlig sind. Wie richte ich meine Textpointer-Variablen in diesem Fall richtig ein? – l46kok