0

私はwpfで作業していますが、いくつかのコンテンツを含むリッチテキストボックスがあります.コンテンツがリッチテキストボックスを超えている場合、下の境界線を非表示にしたい.リッチテキストボックス内のコンテンツの場合、下の境界線を表示したい.今、私は以下のコードを使用しています超過したコンテンツをリッチテキスト ボックスに表示します。

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

しかし、そのリッチテキストボックスに最後の単語が表示されたら、下の境界線を表示したい.これを達成するにはどうすればよいですか?

注:下の境界線を動的に表示する方法は既に知っていますが、最後の単語がリッチテキストボックス内に表示されるかどうかを知りたいですか?

よろしくアルジュン

4

1 に答える 1

1

文字の左上隅が表示されているかどうかを確認する方法を提供できます。Tools次の内容でクラス ライブラリを作成します。

public class ToolsRtb
{
    public static bool PositionVisibleIs(RichTextBox rtb, TextPointer pos)
    {
        // Rectangle around the character to check
        Rect r = pos.GetCharacterRect(LogicalDirection.Forward);

        // Upper left corner of the rectangle ...
        Point upperLeftCorner = r.Location;

        HitTestResult result = VisualTreeHelper.HitTest(rtb, upperLeftCorner);

        // ... is visible?
        if (result != null)
            return true;
        else
            return false;
    }   
}

PositionVisibleIs(...)これは静的メソッドであり、特定のオブジェクト専用ではないことに注意してください。ウィンドウのコード ビハインド ファイルで、次のRichTextBoxようなメソッドを使用します。

// Is the last character of the current document visible?
if (ToolsRtb.PositionVisibleIs(rtb, rtb.Document.ContentEnd) == true)
{
    ...
}

お役に立てれば。

于 2016-01-09T08:45:30.123 に答える