2014-01-09 3 views
0

Мне нужна помощь в прокрутке выделенных текстовых/строковых позиций в богатом текстовом поле. Я смог найти текст и выделить его, но я хочу, чтобы пользователь мог нажать кнопку «Далее» и это событие, чтобы перейти к позиции вертикального смещения первого вхождения выделенного слова в следующий и т. Д. После каждого щелчка , Любая помощь, особенно с поиском позиции для вертикального смещения строки выделенного текста, также будет полезна. Заранее спасибо.Прокрутите до положения в RichTextBox

+0

Я не использую 'RichTextBox' лично, поэтому я не могу помочь из своего опыта. Я быстро поискал вас и нашел несколько страниц в Интернете, которые могли бы вам помочь, вам, возможно, потребуется извлечь немного знаний из каждой статьи, чтобы создать свою функциональность, поэтому, пожалуйста, не ожидайте полного решения. http://msdn.microsoft.com/en-us/library/system.windows.controls.richtextbox.caretposition%28v=vs.110%29.aspx, http://stackoverflow.com/questions/1827323/c- synchronize-scroll-position-of-two-richtextboxes, http://www.codeproject.com/Articles/7830/Scrolling-Around-with-the-RichTextBox-Control – Sheridan

ответ

3

Я нашел ответ на аналогичный вопрос here. Ниже приведен код, который, как я считаю, сделает трюк для вас.

TextPointer start = txtEditor.Selection.Start; 
FrameworkContentElement fce = (start.Parent as FrameworkContentElement); 
if (fce != null) 
{ 
    fce.BringIntoView(); 
} 
0

У меня было два TextPointer сек, с которым я создал TextRange, затем использовали .ApplyPropertyValue на то, чтобы установить цвет фона. Затем я попытался ...

var fce = fromTextPointer as FrameworkContentElement; 
if (fce != null) 
    fce.BringIntoView(); // unreliable 

... но это было ненадежно. То, что я в конце концов обнаружил работал - якобы надежно - использовали .Start в TextRange я создал из тех же fromTextPointer:

var fce = textRange.Start.Parent as FrameworkContentElement; 
if (fce != null) 
    fce.BringIntoView(); // ostensibly reliable 

Я предположил бы, что определенные действия - возможно создание TextRange, но скорее вызова .ApplyPropertyValue - активировать достаточную нормализацию положения внутри виджета и/или объекта textRange, чтобы тогда .BringIntoView() был надежным.

Возможно, это не является необходимым для Selection - как в Ward сек ответ - но я не манипулирует Selection и этот вопрос не говоря уже о Selection конкретно либо, поэтому размещение здесь, в-случае это помогает какой-то другой бедная душа избегает часов WPF «весело».

Смежные вопросы