TextPointer.GetOffsetToPosition(TextPointer) Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Zwraca liczbę symboli między bieżącą TextPointer a drugą określoną wartością 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
Parametry
- position
- TextPointer
Element TextPointer , który określa położenie, aby znaleźć odległość (w symbolach) do.
Zwraca
Względna liczba symboli między bieżącym TextPointer i position
. Wartość ujemna wskazuje, że bieżący TextPointer następuje po pozycji określonej przez position
, 0 wskazuje, że pozycje są równe, a wartość dodatnia wskazuje, że bieżący TextPointer poprzedza pozycję określoną przez position
.
Wyjątki
position
określa położenie poza kontenerem tekstowym skojarzonym z bieżącym położeniem.
Przykłady
W poniższym przykładzie pokazano użycie tej metody. W przykładzie użyto GetOffsetToPosition metody do znalezienia przesunięć dla dwóch TextPointer wystąpień, a następnie użyto tych informacji do zapisania i przywrócenia zaznaczenia w obiekcie RichTextBox. W przykładzie przyjęto założenie, że zawartość obiektu RichTextBox nie została zmieniona między zapisem zaznaczenia a przywróceniem zaznaczenia.
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
Uwagi
Każdy z poniższych elementów jest uważany za symbol:
Tag otwierający lub zamykający TextElement dla elementu.
Element UIElement zawarty w elemecie InlineUIContainer lub BlockUIContainer. Należy pamiętać, że taki element UIElement jest zawsze liczone jako dokładnie jeden symbol. Każda dodatkowa zawartość lub elementy zawarte w obiekcie UIElement nie są liczone jako symbole.
16-bitowy znak Unicode wewnątrz elementu tekstowego Run .