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 указывающее позицию для поиска расстояния (в символах).

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

Относительное число символов между текущим TextPointer и position. Отрицательное значение указывает, что текущий следует позиции, указанной TextPointerпараметром , 0 указывает, что позиции равны, а положительное значение указывает, что текущий positionTextPointer предшествует позиции, указанной в параметре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 элемента.

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

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