RichTextBox: найти соответствующий индекс - PullRequest
1 голос
/ 27 февраля 2012

Скажем, у меня есть WPF RichTextBox со следующим содержанием:

Hello Hello // <== here is a line break \r\n
Turn Your Radio On!

Затем я читаю текст из коробки со следующим кодом:

public static string GetText(this RichTextBox box)
{
    var range = new TextRange(box.Document.ContentStart,
                            box.Document.ContentEnd);

    return range.Text;
}

Послечто я получаю var index = text.IndexOf("Hello\r\nTurn") и var length = "Hello\r\nTurn".Length.
На основании index и length: Как выбрать этот текст в RichTextBox? index/length в простой строке несоответствует тому, что ожидает RichTextBox.

Я попробовал подход из ответа здесь , но, похоже, это не сработает, если текст содержит перенос строки / параграф.

Примечание: Мои манипуляции со строками (поиск index / length) значительно сложнее, чем пример, но приведенный здесь пример хорошо описывает мою проблему

1 Ответ

0 голосов
/ 28 февраля 2012

RichTextBox имеет свойство Selection, которое вы можете вызвать его методом "Select". Он принимает 2 объекта TextPointer, один для начала выбора, а другой для его конца.

http://msdn.microsoft.com/en-us/library/system.windows.documents.textrange.select.aspx

Я не думаю, что свойства index и length будут достаточно хороши для выбора текста. Вам нужно получить настоящий TextPointer.

Попробуйте использовать метод для нахождения конкретных слов TextPointers, например, указанный здесь -

http://blogs.microsoft.co.il/blogs/tamir/archive/2006/12/14/RichTextBox-syntax-highlighting.aspx

...