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 следует за положением, заданным 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 элемента.