Aracılığıyla paylaş


TextPointer Sınıf

Tanım

veya TextBlockiçindeki bir FlowDocument konumu temsil eder.

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
Devralma
TextPointer

Örnekler

Aşağıdaki örnek, belirtilen bir metin kapsayıcısında ilk Run öğenin hemen içinde bir konum bulmak için öğesinin nasıl kullanılacağını TextPointer gösterir.

// 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

Aşağıdaki örnek, tesisleri kullanarak TextPointer basit bir bulma algoritması uygular.

// 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

Açıklamalar

TextPointer sınıfı aşağıdaki terminolojiyi tanıtır:

  • Konum - Doğal olarak, bir TextPointer her zaman içerikteki bir konuma işaret etmektedir. Bu tür konumlar içerikteki karakterler arasında veya içeriğin yapısını tanımlayan akış içeriği öğesi etiketleri arasında yer alır.

  • Geçerli Konum - a TextPointer her zaman bir konumu gösterdiğinden ve aracılığıyla TextPointer gerçekleştirilebilecek işlemlerin birçoğu şu anda tarafından TextPointerişaret edilen konuma göre olduğundan, geçerli konum olarak bir TextPointer tarafından belirtilen konuma başvurmak mantıklıdır.

  • Ekleme Konumu - Ekleme konumu , ilişkili içerik için herhangi bir semantik kuralı bozmadan yeni içeriğin eklenebileceği bir konumdur. Uygulamada ekleme konumu, içeriğin herhangi bir yerinde şapka işaretinin konumlandırıldığı yerdir. Ekleme konumu olmayan geçerli TextPointer bir konum örneği, bitişik Paragraph iki etiket (önceki paragrafın kapanış etiketi ile sonraki paragrafın açılış etiketi arasındaki) arasındaki konumdur.

  • Sembol - Sembol içeren işlemlerin TextPointer amaçları doğrultusunda, aşağıdakilerden herhangi biri simge olarak kabul edilir:

  • Metin Kapsayıcısı - Metin kapsayıcısı , eldeki akış içeriği için nihai kenarlık oluşturan öğedir; tarafından TextPointer belirtilen konum her zaman bir metin kapsayıcısının içinde yer alır. Şu anda bir metin kapsayıcısı veya FlowDocument TextBlockolmalıdır. Genel olarak, farklı metin kapsayıcılarındaki örnekler arasındaki TextPointer işlemler desteklenmez.

  • Belge - Metin kapsayıcısının içeriği, yönteminde ve DocumentStart özelliklerinde IsInSameDocument DocumentEnd olduğu gibi belge olarak adlandırılır.

TextPointer sınıfı, Windows Presentation Foundation (WPF) akış içeriği öğeleriyle temsil edilen içeriğin çapraz geçişini ve işlemesini kolaylaştırmaya yöneliktir; genel olarak, bu tür öğeler öğesinden TextElementtüretilir. Kolaylaştırıcı TextPointer işlemlerden bazıları şunlardır:

Bir nesne tarafından TextPointer gösterilen konum LogicalDirection sabittir. İçerik düzenlendiğinde veya değiştirildiğinde, bir TextPointer tarafından belirtilen konum çevresindeki metne göre değişmez; bunun yerine bu konumun içeriğin başından uzaklığı, içerikteki yeni göreli konumu yansıtacak şekilde buna karşılık olarak ayarlanır. Örneğin, belirli bir paragrafın başındaki konumu gösteren bir, TextPointer içerik paragrafın önüne veya arkasına eklendiğinde veya silindiğinde bile bu paragrafın başına işaret etmeye devam eder.

TextPointer sınıfı herhangi bir ortak oluşturucu sağlamaz. örneği TextPointer , diğer nesnelerin (diğer TextPointer nesneler dahil) özellikleri veya yöntemleri kullanılarak oluşturulur. Aşağıdaki listede, bir oluşturan ve döndüren yöntemlere ve özelliklere birkaç örnek verilmiştir TextPointer. Bu liste kapsamlı değildir:

Özellikler

DocumentEnd

TextPointer Geçerli konumla ilişkili metin kapsayıcısında içeriğin sonunda bir alır.

DocumentStart

Geçerli konumla ilişkili metin kapsayıcısında içeriğin başında bir TextPointer alır.

HasValidLayout

Geçerli konumla ilişkili metin kapsayıcısının geçerli (güncel) bir düzene sahip olup olmadığını gösteren bir değer alır.

IsAtInsertionPosition

Geçerli konumun ekleme konumu olup olmadığını gösteren bir değer alır.

IsAtLineStartPosition

Geçerli konumun bir satırın başında olup olmadığını gösteren bir değer alır.

LogicalDirection

Geçerli konumla ilişkili içeriği belirsiz hale getirmek için kullanılan geçerli konumla ilişkili mantıksal yönü alır.

Paragraph

Varsa geçerli konumun kapsamını oluşturan paragrafı alır.

Parent

Geçerli konumun kapsamını oluşturan mantıksal üst öğeyi alır.

Yöntemler

CompareTo(TextPointer)

Geçerli TextPointer ile belirtilen ikinci TextPointerbir tarafından belirtilen konumlar arasında sıralı bir karşılaştırma gerçekleştirir.

DeleteTextInRun(Int32)

Belirtilen karakter sayısını geçerli TextPointertarafından belirtilen konumdan siler.

Equals(Object)

Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler.

(Devralındığı yer: Object)
GetAdjacentElement(LogicalDirection)

Varsa, geçerli TextPointer öğeyi belirtilen mantıksal yönde sınırlayan öğesini döndürür.

GetCharacterRect(LogicalDirection)

Geçerliyle TextPointer belirtilen mantıksal yönde sınırlayan içerik için bir sınırlayıcı kutu (Rect) döndürür.

GetHashCode()

Varsayılan karma işlevi işlevi görür.

(Devralındığı yer: Object)
GetInsertionPosition(LogicalDirection)

Belirtilen mantıksal yöndeki en yakın ekleme konumuna bir TextPointer döndürür.

GetLineStartPosition(Int32)

TextPointer Geçerli TextPointerile ilgili olarak belirtilen satırın başına bir döndürür.

GetLineStartPosition(Int32, Int32)

TextPointer Geçerli TextPointeröğesine göre belirtilen satırın başına bir döndürür ve kaç satırın atlandığını bildirir.

GetNextContextPosition(LogicalDirection)

Belirtilen mantıksal yönde bir sonraki simgeye bir işaretçi döndürür.

GetNextInsertionPosition(LogicalDirection)

Belirtilen mantıksal yönde bir sonraki ekleme konumuna döndürür TextPointer .

GetOffsetToPosition(TextPointer)

Geçerli TextPointer ile belirtilen TextPointersaniye arasındaki sembol sayısını döndürür.

GetPointerContext(LogicalDirection)

Belirtilen mantıksal yöndeki geçerliye TextPointer bitişik içerik için bir kategori göstergesi döndürür.

GetPositionAtOffset(Int32)

Belirtilen uzaklık tarafından belirtilen konuma, sembollerde, geçerli TextPointeröğesinin başından itibaren bir TextPointer döndürür.

GetPositionAtOffset(Int32, LogicalDirection)

Belirtilen uzaklık tarafından belirtilen konuma, sembollerde, geçerlinin TextPointer başından ve belirtilen yönde bir TextPointer döndürür.

GetTextInRun(LogicalDirection)

Belirtilen mantıksal yöndeki geçerlinin TextPointer bitişiğindeki herhangi bir metni içeren bir dize döndürür.

GetTextInRun(LogicalDirection, Char[], Int32, Int32)

Belirtilen yöndeki herhangi bir bitişik metinden belirtilen en fazla karakter sayısını çağıran tarafından sağlanan karakter dizisine kopyalar.

GetTextRunLength(LogicalDirection)

Geçerli TextPointer ve sonraki metin olmayan simge arasındaki Unicode karakter sayısını belirtilen mantıksal yönde döndürür.

GetType()

Type Geçerli örneğini alır.

(Devralındığı yer: Object)
InsertLineBreak()

Geçerli konuma satır sonu ekler.

InsertParagraphBreak()

Geçerli konuma paragraf sonu ekler.

InsertTextInRun(String)

Belirtilen metni geçerli konumdaki metne Run ekler.

IsInSameDocument(TextPointer)

Belirtilen konumun geçerli konumla aynı metin kapsayıcısında olup olmadığını gösterir.

MemberwiseClone()

Geçerli Objectöğesinin sığ bir kopyasını oluşturur.

(Devralındığı yer: Object)
ToString()

Bu tür veya üye Windows Presentation Foundation (WPF) altyapısını destekler ve doğrudan kodunuzdan kullanılması amaçlanmamıştır.

Şunlara uygulanır

Ayrıca bkz.