Si solo le dan un índice y una longitud (o EndIndex) de un cierto texto para seleccionar, ¿cómo lo hace en la versión WPF de RichTextBox?Cómo seleccionar el texto de RichTextBox dado un índice y longitud
Esto es muy factible en Textbox como se puede llamar a Textbox.Select (startIndex, Length) pero no veo nada equivalente en RTB.
Edición: He encontrado la respuesta a hacer una selección
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;
}
Sin embargo, cuando trato de resaltar la línea después de la selección se ha hecho:
rtb.Selection.ApplyPropertyValue(TextElement.BackgroundProperty, new SolidColorBrush(Colors.LightBlue));
La función de resaltado sólo funciona en el primer intento y se rompe después del segundo intento. Alguien sabe el motivo de esto?
El método Select toma en dos punteros de texto y sólo tengo un índice y longitud para trabajar con los cuales ambos son enteros. ¿Cómo configuro correctamente mis variables de textopointer en este caso? – l46kok