TextPointer Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Mewakili posisi dalam atau FlowDocumentTextBlock.
public ref class TextPointer : System::Windows::Documents::ContentPosition
public class TextPointer : System.Windows.Documents.ContentPosition
type TextPointer = class
inherit ContentPosition
Public Class TextPointer
Inherits ContentPosition
- Warisan
Contoh
Contoh berikut menunjukkan cara menggunakan TextPointer untuk menemukan posisi tepat di dalam elemen pertama Run dalam kontainer teks tertentu.
// This method returns the position just inside of the first text Run (if any) in a
// specified text container.
TextPointer FindFirstRunInTextContainer(DependencyObject container)
{
TextPointer position = null;
if (container != null){
if (container is FlowDocument)
position = ((FlowDocument)container).ContentStart;
else if (container is TextBlock)
position = ((TextBlock)container).ContentStart;
else
return position;
}
// Traverse content in forward direction until the position is immediately after the opening
// tag of a Run element, or the end of content is encountered.
while (position != null)
{
// Is the current position just after an opening element tag?
if (position.GetPointerContext(LogicalDirection.Backward) == TextPointerContext.ElementStart)
{
// If so, is the tag a Run?
if (position.Parent is Run)
break;
}
// Not what we're looking for; on to the next position.
position = position.GetNextContextPosition(LogicalDirection.Forward);
}
// This will be either null if no Run is found, or a position just inside of the first Run element in the
// specifed text container. Because position is formed from ContentStart, it will have a logical direction
// of Backward.
return position;
}
' This method returns the position just inside of the first text Run (if any) in a
' specified text container.
Private Function FindFirstRunInTextContainer(ByVal container As DependencyObject) As TextPointer
Dim position As TextPointer = Nothing
If container IsNot Nothing Then
If TypeOf container Is FlowDocument Then
position = (CType(container, FlowDocument)).ContentStart
ElseIf TypeOf container Is TextBlock Then
position = (CType(container, TextBlock)).ContentStart
Else
Return position
End If
End If
' Traverse content in forward direction until the position is immediately after the opening
' tag of a Run element, or the end of content is encountered.
Do While position IsNot Nothing
' Is the current position just after an opening element tag?
If position.GetPointerContext(LogicalDirection.Backward) = TextPointerContext.ElementStart Then
' If so, is the tag a Run?
If TypeOf position.Parent Is Run Then
Exit Do
End If
End If
' Not what we're looking for on to the next position.
position = position.GetNextContextPosition(LogicalDirection.Forward)
Loop
' This will be either null if no Run is found, or a position just inside of the first Run element in the
' specifed text container. Because position is formed from ContentStart, it will have a logical direction
' of Backward.
Return position
End Function
Contoh berikut mengimplementasikan algoritma temuan sederhana menggunakan TextPointer fasilitas.
// This method will search for a specified word (string) starting at a specified position.
TextPointer FindWordFromPosition(TextPointer position, string word)
{
while (position != null)
{
if (position.GetPointerContext(LogicalDirection.Forward) == TextPointerContext.Text)
{
string textRun = position.GetTextInRun(LogicalDirection.Forward);
// Find the starting index of any substring that matches "word".
int indexInRun = textRun.IndexOf(word);
if (indexInRun >= 0)
{
position = position.GetPositionAtOffset(indexInRun);
break;
}
}
else
{
position = position.GetNextContextPosition(LogicalDirection.Forward);
}
}
// position will be null if "word" is not found.
return position;
}
' This method will search for a specified word (string) starting at a specified position.
Private Function FindWordFromPosition(ByVal position As TextPointer, ByVal word As String) As TextPointer
Do While position IsNot Nothing
If position.GetPointerContext(LogicalDirection.Forward) = TextPointerContext.Text Then
Dim textRun As String = position.GetTextInRun(LogicalDirection.Forward)
' Find the starting index of any substring that matches "word".
Dim indexInRun As Integer = textRun.IndexOf(word)
If indexInRun >= 0 Then
position = position.GetPositionAtOffset(indexInRun)
Exit Do
End If
Else
position = position.GetNextContextPosition(LogicalDirection.Forward)
End If
Loop
' position will be null if "word" is not found.
Return position
End Function
Keterangan
Kelas TextPointer memperkenalkan terminologi berikut:
Posisi - Secara inheren, TextPointer selalu menunjuk ke posisi dalam konten. Posisi tersebut berada di antara karakter dalam konten, atau di antara tag elemen konten alur yang menentukan struktur untuk konten.
Posisi Saat Ini - Karena TextPointer selalu menunjukkan posisi, dan karena banyak operasi yang dapat dilakukan melalui TextPointer relatif terhadap posisi yang saat ini ditunjukkan oleh TextPointer, masuk akal untuk hanya merujuk ke posisi yang TextPointer ditunjukkan oleh sebagai posisi saat ini.
Posisi Penyisipan - Posisi penyisipan adalah posisi di mana konten baru dapat ditambahkan tanpa melanggar aturan semantik untuk konten terkait. Dalam praktiknya, posisi penyisipan berada di mana saja dalam konten di mana tanda sisipan dapat diposisikan. Contoh posisi valid TextPointer yang bukan posisi penyisipan adalah posisi antara dua tag yang berdekatan Paragraph (yaitu, antara tag penutup paragraf sebelumnya dan tag pembuka paragraf berikutnya).
Simbol - Untuk tujuan TextPointer operasi yang melibatkan simbol, salah satu hal berikut dianggap sebagai simbol:
Tag pembuka atau penutup untuk TextElement elemen.
UIElement Elemen yang terkandung dalam InlineUIContainer atau BlockUIContainer. Perhatikan bahwa seperti UIElement itu selalu dihitung sebagai tepat satu simbol; konten atau elemen tambahan yang terkandung oleh UIElement tidak dihitung sebagai simbol.
Setiap karakter Unicode 16-bit di dalam elemen teks Run .
Kontainer Teks - Kontainer teks adalah elemen yang membentuk batas akhir untuk konten alur yang ada; posisi yang TextPointer ditunjukkan oleh selalu berada dalam kontainer teks. Saat ini, kontainer teks harus berupa FlowDocument atau TextBlock. Secara umum, operasi antar TextPointer instans dalam kontainer teks yang berbeda tidak didukung.
Dokumen - Konten dalam kontainer teks disebut sebagai dokumen, seperti dalam IsInSameDocument metode dan DocumentStart properti.DocumentEnd
Kelas TextPointer ini dimaksudkan untuk memfasilitasi traversal dan manipulasi konten yang diwakili oleh elemen konten alur Windows Presentation Foundation (WPF) ; secara umum, elemen tersebut berasal dari TextElement. Beberapa operasi yang TextPointer memfasilitasi meliputi yang berikut ini:
Lakukan perbandingan ordinal posisi saat ini dengan posisi kedua yang ditentukan. Lihat metode .CompareTo
Tentukan jenis konten yang berdekatan dengan posisi saat ini dalam arah yang ditentukan. GetPointerContext Lihat metode dan TextPointerContext enumerasi.
Dapatkan cakupan tersebut TextElement atau berdekatan dengan posisi saat ini. Lihat Paragraph dan metodenya GetAdjacentElement .
Dapatkan kontainer teks yang mencakup dokumen saat ini. Parent Lihat properti .
Dapatkan jumlah karakter yang ditentukan sebelumnya atau mengikuti posisi saat ini. Lihat metode .GetTextInRun
Sisipkan string karakter pada posisi saat ini. Lihat metode .InsertTextInRun
Temukan batas baris dalam konten. GetLineStartPosition Lihat metode dan IsAtLineStartPosition properti .
Terjemahkan antara TextPointer posisi dan offset simbol ke dalam konten. GetOffsetToPosition Lihat metode dan GetPositionAtOffset .
Lakukan pengujian hit visual dengan menerjemahkan antara TextPointer posisi dan koordinat relatif yang Point mewakili.
Temukan posisi penyisipan terdekat, atau periksa apakah posisi saat ini adalah posisi penyisipan. GetInsertionPosition Lihat metode dan GetNextInsertionPosition dan IsAtInsertionPosition properti .
Posisi dan LogicalDirection ditunjukkan oleh TextPointer objek tidak dapat diubah. Ketika konten diedit atau dimodifikasi, posisi yang TextPointer ditunjukkan oleh tidak berubah relatif terhadap teks di sekitarnya; melainkan offset posisi tersebut dari awal konten disesuaikan dengan sesuai untuk mencerminkan posisi relatif baru dalam konten. Misalnya, TextPointer yang menunjukkan posisi di awal paragraf tertentu terus menunjuk ke awal paragraf tersebut bahkan ketika konten disisipkan atau dihapus sebelum atau sesudah paragraf.
Kelas TextPointer tidak menyediakan konstruktor publik apa pun. Instans TextPointer dibuat dengan menggunakan properti atau metode objek lain (termasuk objek lain TextPointer ). Daftar berikut ini menyediakan beberapa contoh metode dan properti yang membuat dan mengembalikan TextPointer. Daftar ini tidak lengkap:
TextElementDari : ContentStart, ContentEnd, ElementStart, dan ElementEnd.
TextBlock Dari (kontainer teks): ContentStart, ContentEnd, dan GetPositionFromPoint.
FlowDocument Dari (kontainer teks): ContentStart, danContentEnd
Dari yang sudah ada TextPointer: DocumentStart, DocumentEnd, GetNextInsertionPosition, dan GetPositionAtOffset.
Properti
| Nama | Deskripsi |
|---|---|
| DocumentEnd |
TextPointer Mendapatkan di akhir konten dalam kontainer teks yang terkait dengan posisi saat ini. |
| DocumentStart |
TextPointer Mendapatkan di awal konten dalam kontainer teks yang terkait dengan posisi saat ini. |
| HasValidLayout |
Mendapatkan nilai yang menunjukkan apakah kontainer teks yang terkait dengan posisi saat ini memiliki tata letak yang valid (up-to-date). |
| IsAtInsertionPosition |
Mendapatkan nilai yang menunjukkan apakah posisi saat ini adalah posisi penyisipan. |
| IsAtLineStartPosition |
Mendapatkan nilai yang menunjukkan apakah posisi saat ini berada di awal baris. |
| LogicalDirection |
Mendapatkan arah logis yang terkait dengan posisi saat ini yang digunakan untuk membedakan konten yang terkait dengan posisi saat ini. |
| Paragraph |
Mendapatkan paragraf yang mencakup posisi saat ini, jika ada. |
| Parent |
Mendapatkan induk logis yang mencakup posisi saat ini. |
Metode
| Nama | Deskripsi |
|---|---|
| CompareTo(TextPointer) |
Melakukan perbandingan ordinal antara posisi yang ditentukan oleh saat ini TextPointer dan detik yang ditentukan TextPointer. |
| DeleteTextInRun(Int32) |
Menghapus jumlah karakter yang ditentukan dari posisi yang ditunjukkan oleh .TextPointer |
| Equals(Object) |
Menentukan apakah objek yang ditentukan sama dengan objek saat ini. (Diperoleh dari Object) |
| GetAdjacentElement(LogicalDirection) |
Mengembalikan elemen, jika ada, yang berbatasan dengan saat ini TextPointer dalam arah logika yang ditentukan. |
| GetCharacterRect(LogicalDirection) |
Mengembalikan kotak pembatas (Rect) untuk konten yang berbatasan dengan saat ini TextPointer dalam arah logika yang ditentukan. |
| GetHashCode() |
Berfungsi sebagai fungsi hash default. (Diperoleh dari Object) |
| GetInsertionPosition(LogicalDirection) |
Mengembalikan TextPointer ke posisi penyisipan terdekat dalam arah logika yang ditentukan. |
| GetLineStartPosition(Int32, Int32) |
TextPointer Mengembalikan ke awal baris yang ditentukan relatif terhadap , TextPointerdan melaporkan berapa banyak baris yang dilewati. |
| GetLineStartPosition(Int32) |
Mengembalikan TextPointer ke awal baris yang ditentukan relatif terhadap .TextPointer |
| GetNextContextPosition(LogicalDirection) |
Mengembalikan penunjuk ke simbol berikutnya dalam arah logika yang ditentukan. |
| GetNextInsertionPosition(LogicalDirection) |
Mengembalikan TextPointer ke posisi penyisipan berikutnya dalam arah logika yang ditentukan. |
| GetOffsetToPosition(TextPointer) |
Mengembalikan jumlah simbol antara saat ini TextPointer dan kedua yang ditentukan TextPointer. |
| GetPointerContext(LogicalDirection) |
Mengembalikan indikator kategori untuk konten yang berdekatan dengan saat ini TextPointer dalam arah logika yang ditentukan. |
| GetPositionAtOffset(Int32, LogicalDirection) |
Mengembalikan ke posisi yang TextPointer ditunjukkan oleh offset yang ditentukan, dalam simbol, dari awal saat ini TextPointer dan dalam arah yang ditentukan. |
| GetPositionAtOffset(Int32) |
Mengembalikan ke posisi yang TextPointer ditunjukkan oleh offset yang ditentukan, dalam simbol, dari awal saat ini TextPointer. |
| GetTextInRun(LogicalDirection, Char[], Int32, Int32) |
Menyalin jumlah karakter maksimum yang ditentukan dari teks yang berdekatan ke arah yang ditentukan ke dalam array karakter yang disediakan pemanggil. |
| GetTextInRun(LogicalDirection) |
Mengembalikan string yang berisi teks apa pun yang berdekatan dengan saat ini TextPointer dalam arah logika yang ditentukan. |
| GetTextRunLength(LogicalDirection) |
Mengembalikan jumlah karakter Unicode antara simbol saat ini TextPointer dan non-teks berikutnya, dalam arah logika yang ditentukan. |
| GetType() |
Mendapatkan Type instans saat ini. (Diperoleh dari Object) |
| InsertLineBreak() |
Menyisipkan hentian baris pada posisi saat ini. |
| InsertParagraphBreak() |
Menyisipkan hentian paragraf pada posisi saat ini. |
| InsertTextInRun(String) |
Menyisipkan teks yang ditentukan ke dalam teks Run pada posisi saat ini. |
| IsInSameDocument(TextPointer) |
Menunjukkan apakah posisi yang ditentukan berada dalam kontainer teks yang sama dengan posisi saat ini. |
| MemberwiseClone() |
Membuat salinan dangkal dari Objectsaat ini. (Diperoleh dari Object) |
| ToString() |
Tipe atau anggota ini mendukung infrastruktur Windows Presentation Foundation (WPF) dan tidak dimaksudkan untuk digunakan langsung dari kode Anda. |