Bagikan melalui


TextPointer Kelas

Definisi

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
TextPointer

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:

  • 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:

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:

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.

Berlaku untuk

Lihat juga