TextPointer.GetOffsetToPosition(TextPointer) 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
傳回目前 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或 BlockUIContainer 中包含的 InlineUIContainer 專案。 請注意,這類 UIElement 一律會計算為完全相同的一個符號;包含 UIElement 的任何額外內容或元素都不會算為符號。
文字 Run 專案內的 16 位 Unicode 字元。