2014-01-09 69 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-同步滾動位置的兩個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 s的我創建的TextRange,然後用於對.ApplyPropertyValue設定背景色。然後我試着...

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

...但它是不可靠的。我終於發現工作 - 表面上是可靠的 - 用我來自同一個fromTextPointer創建的TextRange.Start

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

我猜想,某些行動 - 可能創造一個TextRange但更可能調用的.ApplyPropertyValue的 - 在小部件和/或textRange對象內觸發足夠的位置歸一化,然後.BringIntoView()可靠。

也許,這是沒有必要的Selection - 在Ward的回答 - 但我沒有操縱Selection和這個問題沒有提及具體Selection要麼,所以在這裏發帖的情況下它可以幫助一些其他可憐的靈魂避免數小時的WPF「樂趣」。