TextPointer.GetOffsetToPosition(TextPointer) メソッド

定義

現在の TextPointer と指定した 2 つ目の TextPointer の間にあるシンボルの数を返します。

public:
 int GetOffsetToPosition(System::Windows::Documents::TextPointer ^ position);
public int GetOffsetToPosition (System.Windows.Documents.TextPointer position);
member this.GetOffsetToPosition : System.Windows.Documents.TextPointer -> int
Public Function GetOffsetToPosition (position As TextPointer) As Integer

パラメーター

position
TextPointer

距離 (シンボル単位) を確認する位置を指定する TextPointer

戻り値

現在の TextPointerposition の間にあるシンボルの相対的な数。 負の値は、現在の TextPointerposition で指定された位置より後にあることを示します。0 は、2 つの位置が等しいことを示します。正の値は、現在の TextPointerposition で指定されている位置より前にあることを示します。

例外

position は、現在の位置に関連付けられているテキスト コンテナー外部の位置を指定します。

次の例では、このメソッドの使用方法を示します。 この例では、 メソッドを GetOffsetToPosition 使用して 2 つの TextPointer インスタンスのオフセットを検索し、この情報を使用して 内の RichTextBox選択範囲を保存および復元します。 この例では、 の内容が、選択範囲の RichTextBox 保存と選択の復元の間で変更されていないことを前提としています。

struct SelectionOffsets { internal int Start; internal int End; }
 
SelectionOffsets GetSelectionOffsetsRTB(RichTextBox richTextBox)
{
    SelectionOffsets selectionOffsets;
 
    TextPointer contentStart = richTextBox.Document.ContentStart;

    // Find the offset for the starting and ending TextPointers.
    selectionOffsets.Start = contentStart.GetOffsetToPosition(richTextBox.Selection.Start);
    selectionOffsets.End = contentStart.GetOffsetToPosition(richTextBox.Selection.End);

    return selectionOffsets;
}

void RestoreSelectionOffsetsRTB(RichTextBox richTextBox, SelectionOffsets selectionOffsets)
{
    TextPointer contentStart = richTextBox.Document.ContentStart;
 
    // Use previously determined offsets to create corresponding TextPointers,
    // and use these to restore the selection.
    richTextBox.Selection.Select(
       contentStart.GetPositionAtOffset(selectionOffsets.Start),
       contentStart.GetPositionAtOffset(selectionOffsets.End)
    );
}
Private Structure SelectionOffsets
    Friend Start As Integer
    Friend [End] As Integer
End Structure

Private Function GetSelectionOffsetsRTB(ByVal richTextBox As RichTextBox) As SelectionOffsets
    Dim selectionOffsets As SelectionOffsets

    Dim contentStart As TextPointer = richTextBox.Document.ContentStart

    ' Find the offset for the starting and ending TextPointers.
    selectionOffsets.Start = contentStart.GetOffsetToPosition(richTextBox.Selection.Start)
    selectionOffsets.End = contentStart.GetOffsetToPosition(richTextBox.Selection.End)

    Return selectionOffsets
End Function

Private Sub RestoreSelectionOffsetsRTB(ByVal richTextBox As RichTextBox, ByVal selectionOffsets As SelectionOffsets)
    Dim contentStart As TextPointer = richTextBox.Document.ContentStart

    ' Use previously determined offsets to create corresponding TextPointers,
    ' and use these to restore the selection.
    richTextBox.Selection.Select(contentStart.GetPositionAtOffset(selectionOffsets.Start), contentStart.GetPositionAtOffset(selectionOffsets.End))
End Sub

注釈

次のいずれかがシンボルと見なされます。

  • 要素の開始タグまたは終了タグ TextElement

  • UIElementまたは BlockUIContainerInlineUIContainer含まれる要素。 このような は UIElement 常に 1 つのシンボルとしてカウントされることに注意してください。に含まれる UIElement 追加のコンテンツまたは要素はシンボルとしてカウントされません。

  • テキスト Run 要素内の 16 ビット Unicode 文字。

適用対象

こちらもご覧ください