TextPointer.GetOffsetToPosition(TextPointer) Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Returnerar antalet symboler mellan den aktuella TextPointer och en andra angiven 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
Parametrar
- position
- TextPointer
En TextPointer som anger en position för att hitta avståndet (i symboler) till.
Returer
Det relativa antalet symboler mellan den aktuella TextPointer och position. Ett negativt värde anger att strömmen TextPointer följer den position som anges av position, 0 anger att positionerna är lika och ett positivt värde anger att strömmen TextPointer föregår den position som anges av position.
Undantag
position anger en position utanför textcontainern som är associerad med den aktuella positionen.
Exempel
I följande exempel visas en användning för den här metoden. I exemplet används GetOffsetToPosition metoden för att hitta förskjutningarna för två TextPointer instanser och använder sedan den här informationen för att spara och återställa markeringen i en RichTextBox. I exemplet förutsätts att innehållet i RichTextBox inte har ändrats mellan en markeringssparning och en markeringsåterställning.
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
Kommentarer
Något av följande anses vara en symbol:
En inledande eller avslutande tagg för ett TextElement element.
Ett UIElement element som finns i en InlineUIContainer eller BlockUIContainer. Observera att en UIElement sådan alltid räknas som exakt en symbol. Eventuella ytterligare innehåll eller element som ingår i UIElement räknas inte som symboler.
Ett 16-bitars Unicode-tecken inuti ett textelement Run .