TextPointer.GetOffsetToPosition(TextPointer) Methode

Definition

Gibt die Anzahl der Symbole zwischen dem aktuellen TextPointer und einem zweiten angegebenen Zurück 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

Parameter

position
TextPointer

Ein TextPointer Wert, der eine Position angibt, an der der Abstand (in Symbolen) gefunden werden soll.

Gibt zurück

Die relative Anzahl der Symbole zwischen dem aktuellen TextPointer und positiondem . Ein negativer Wert gibt an, dass der aktuelle TextPointer Wert auf die durch position, 0 angegebene Position folgt, dass die Positionen gleich sind, und ein positiver Wert gibt an, dass die aktuelle TextPointer Position vor der durch position.

Ausnahmen

position Gibt eine Position außerhalb des Textcontainers an, der der aktuellen Position zugeordnet ist.

Beispiele

Im folgenden Beispiel wird eine Verwendung für diese Methode veranschaulicht. Das Beispiel verwendet die GetOffsetToPosition Methode, um die Offsets für zwei TextPointer Instanzen zu finden, und verwendet dann diese Informationen, um die Auswahl in einer RichTextBox. Im Beispiel wird davon ausgegangen, dass sich der Inhalt des RichTextBox Elements zwischen dem Speichern einer Auswahl und einer Auswahlwiederherstellung nicht geändert hat.

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

Hinweise

Eine der folgenden Elemente wird als Symbol betrachtet:

  • Ein öffnender oder schließender Tag für ein TextElement Element.

  • Ein UIElement Element, das in einem InlineUIContainer oder BlockUIContainer. Beachten Sie, dass ein UIElement solches Symbol immer als genau ein Symbol gezählt wird. Alle zusätzlichen Inhalte oder Elemente, die in den UIElement Elementen enthalten sind, werden nicht als Symbole gezählt.

  • Ein 16-Bit-Unicode-Zeichen innerhalb eines Textelements Run .

Gilt für:

Weitere Informationen