2016-01-08 44 views
0

我已經使用了下面的代碼。它將當前插入符號位置移到視口頂部。在RichTextBox視口中設置當前caretPosition結束?

FrameworkContentElement fce = (tpNextLine2.Parent as FrameworkContentElement); 
if (fce != null) 
{ 
    fce.BringIntoView(); 
} 

我想使用WPF在richtextbox視口中移動當前插入文字指針。

我該如何做到這一點?

回答

1

如果你不想改變當前插入符號位置,但滾動WPF RichTextBox的這個位置移動到可視區域的底部,您可以使用此代碼:

Rect rc = rtb.CaretPosition.GetCharacterRect(LogicalDirection.Forward); 
rtb.ScrollToVerticalOffset(rc.Bottom + rtb.VerticalOffset - rtb.ViewportHeight); 
+0

@ Fratyx:感謝ü。它就像我想要的。但如何檢查currentcaretposition是在視口還是不在?因爲在一次翻頁之後,每一行都會滾動。因此,我認爲,一旦我檢查當前的脫字號位置是否不在視口中後,就會調用您的代碼。 –

+1

@arjun sanju:您可以通過[此代碼](http://stackoverflow.com/a/34691469/3135228)檢查位置是否可見。 – Pollitzer

+0

@ Crawumbo:上述相同的邏輯,如何獲得rc.Top? –

0

試試這個代碼:

RichTextBox1.Select(RichTextBox1.Text.Length - 1, 0); 

RichTextBox1.ScrollToCaret(); 
+0

可惜,這只是工作在Windows.Forms的,而不是在WPF – Fratyx