2009-08-04 19 views
1

私はRichTextBoxにテキストの束を持っているアプリケーションに取り組んでいます。テキスト内のさまざまな位置にジャンプしています(たとえば、任意の段落に移動)。キャレットをその位置に送信すると動作するように見えますが、表示可能領域のどこにキャレットが終わるかを制御できないようです。WPF RichTextBoxの表示可能領域を見つけるにはどうすればよいですか?

時には、キャレットはRichTextBoxの上部で終了することがあります。キャレットがある行だけに興味があっても段落全体に興味があるなら、これは問題ありません。私はいつでもRichTextBoxの途中でキャレットを取得したいと思います。パラグラフが可視領域よりも長い場合を除きます。

私の質問です。 RichTextBoxの可視領域を決定する方法があるので、キャレットを適切に配置する方法を計算しますか?私がその価値を持っていれば、中間にキャレットを置くか(そして中間がどこにあるかを知る)、または上にキャレットを置くかどうかを決めることができます。ご協力いただきありがとうございます。

答えて

0

私はこの問題を解決しました。 RichTextBoxには、テキストポインタの位置に追加すると実際のオフセットが与えられるVerticalOffsetプロパティがあります。

このオフセットを使用すると、RichTextBox.ScrollToVerticalOffsetを使用して、RichTextBox.ActualHeightプロパティに基づいてボックスをスクロールできます。

例: は私が

Rect thisposition = pointer1.GetCharacterRect(LogicalDirection.Forward); 

richTextBox1.Focus(); 
richTextBox1.CaretPosition = pointer1; 


double totaloffset = thisposition.Top + richTextBox1.VerticalOffset; 
richTextBox1.ScrollToVerticalOffset(totaloffset - richTextBox1.ActualHeight/2); 
までスクロールしたい位置にするTextPoint pointer1を持っていると仮定します
関連する問題