TextPointer.GetOffsetToPosition(TextPointer) Метод

Определение

Возвращение числа символов между текущим TextPointer и вторым указанным 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, который задает положение, до которо٠надо найти расстояние (в символах).

Возвращаемое значение

Int32

Относительное число символов между текущим TextPointer и position. Отрицательное значение показывает, что текущий TextPointer следует за положением, заданным position, 0 означает, что положения равны, а положительное значение показывает, что текущий TextPointer предшествует положению, указанному position.

Исключения

position указывает положение за пределами текстового контейнера, связанного с текущим положением.

Примеры

В следующем примере показано использование этого метода. В примере используется GetOffsetToPosition метод для поиска смещения для двух 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 , содержащийся в элементе InlineUIContainer или BlockUIContainer. Обратите внимание, что такое значение UIElement всегда учитывается как один символ; любое дополнительное содержимое или элементы, содержащиеся в UIElement нем, не считаются символами.

  • 16-разрядный символ Юникода внутри текстового Run элемента.

Применяется к

См. также раздел