2014-01-09 39 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“乐趣”。