TextPointer.GetOffsetToPosition(TextPointer) Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Devolve a contagem de símbolos entre a corrente TextPointer e um segundo especificado 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
Parâmetros
- position
- TextPointer
A TextPointer que especifica uma posição para encontrar a distância (em símbolos) a.
Devoluções
O número relativo de símbolos entre a corrente TextPointer e position. Um valor negativo indica que a corrente TextPointer segue a posição especificada por position, 0 indica que as posições são iguais, e um valor positivo indica que a corrente TextPointer precede a posição especificada por position.
Exceções
position especifica uma posição fora do contentor de texto associado à posição atual.
Exemplos
O exemplo seguinte demonstra a utilização deste método. O exemplo usa o GetOffsetToPosition método para encontrar os deslocamentos para duas TextPointer instâncias, e depois usa esta informação para guardar e restaurar a seleção num RichTextBox. O exemplo assume que o conteúdo do RichTextBox não mudou entre uma gravação de seleção e uma restauração de seleção.
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
Observações
Qualquer um dos seguintes elementos é considerado um símbolo:
Uma etiqueta de abertura ou fecho para um TextElement elemento.
Um UIElement elemento contido num InlineUIContainer ou BlockUIContainer. Note-se que tal é UIElement sempre contado como exatamente um símbolo; qualquer conteúdo adicional ou elemento contido por o UIElement não é contado como símbolos.
Um carácter Unicode de 16 bits dentro de um elemento de texto Run .