TextPointer Klasa

Definicja

Reprezentuje pozycję w FlowDocument lub TextBlock.Represents a position within a FlowDocument or TextBlock.

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

Przykłady

Poniższy przykład ilustruje sposób użycia TextPointer, aby znaleźć pozycję bezpośrednio wewnątrz pierwszego elementu Run w określonym kontenerze tekstu.The following example demonstrates how to use a TextPointer to find a position just inside of the first Run element in a specified text container.

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

W poniższym przykładzie wdrożono algorytm uproszczony Find przy użyciu narzędzi TextPointer.The following example implements a simplistic find algorithm using TextPointer facilities.

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

Uwagi

W klasie TextPointer wprowadzono następującą terminologię:The TextPointer class introduces the following terminology:

  • Pozycja — nieodłącznie, TextPointer zawsze wskazuje na pozycję zawartości.Position - Inherently, a TextPointer always points to a position in content. Takie pozycje mieszczą się między znakami w zawartości lub między tagami elementów zawartości przepływu, które definiują strukturę zawartości.Such positions either fall between characters in the content, or between flow content element tags that define structure for the content.

  • Bieżąca pozycja — ponieważ TextPointer zawsze wskazuje na pozycję, a wiele operacji, które mogą być wykonywane przez TextPointer, odnoszą się do pozycji obecnie wskazywanej przez TextPointer, dlatego warto po prostu odwołać się do pozycji wskazywanej przez TextPointer jako bieżące położenie.Current Position - Because a TextPointer always indicates a position, and because many of the operations that can be performed through a TextPointer are relative to the position currently pointed to by the TextPointer, it makes sense to simply refer to the position indicated by a TextPointer as the current position.

  • Pozycja wstawiania — pozycja wstawiania jest pozycją, w której można dodać nową zawartość bez przerywania żadnych reguł semantycznych dla skojarzonej zawartości.Insertion Position - An insertion position is a position where new content may be added without breaking any semantic rules for the associated content. W tej sytuacji pozycja wstawiania jest wszędzie w zawartości, w której można umieścić karetkę.In practice, an insertion position is anywhere in content where a caret may be positioned. Przykładem prawidłowej pozycji TextPointer, która nie jest pozycją wstawiania, jest pozycja między dwoma sąsiednimi tagami Paragraph (czyli między tagiem zamykającym poprzedniego akapitu i tagiem otwierającym następnego akapitu).An example of a valid TextPointer position that is not an insertion position is the position between two adjacent Paragraph tags (that is, between the closing tag of the preceding paragraph and the opening tag of the next paragraph).

  • Symbol — do celów TextPointer operacji obejmujących symbole, każdy z następujących elementów jest traktowany jako symbol:Symbol - For the purposes of TextPointer operations that involve symbols, any of the following is considered to be a symbol:

  • Kontener tekstu — kontener tekstowy to element, który tworzy ostatecznie obramowanie dla zawartości przepływu. Pozycja wskazywana przez TextPointer zawsze znajduje się w kontenerze tekstu.Text Container - A text container is the element that forms the ultimate border for the flow content at hand; the position indicated by a TextPointer always falls within a text container. Obecnie kontener tekstu musi być FlowDocument lub TextBlock.Currently, a text container must be either a FlowDocument or a TextBlock. Ogólnie mówiąc, operacje między wystąpieniami TextPointer w różnych kontenerach tekstowych nie są obsługiwane.Generally speaking, operations between TextPointer instances in different text containers are not supported.

  • Dokument — zawartość w kontenerze tekstu jest nazywana dokumentem, tak jak w metodzie IsInSameDocument i DocumentStart i DocumentEnd właściwości.Document - The content in a text container is referred to as a document, as in the IsInSameDocument method and the DocumentStart and DocumentEnd properties.

Klasa TextPointer ma ułatwić przechodzenie i manipulowanie zawartością reprezentowaną przez Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) elementy zawartości przepływu. Ogólnie rzecz biorąc, takie elementy pochodzą z TextElement.The TextPointer class is intended to facilitate traversal and manipulation of content that is represented by Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) flow content elements; in general, such elements derive from TextElement. Poniżej wymieniono niektóre operacje, które TextPointer ułatwiają:Some of the operations that TextPointer facilitates include the following:

Pozycja i LogicalDirection wskazywane przez obiekt TextPointer są niezmienne.The position and LogicalDirection indicated by a TextPointer object are immutable. Gdy zawartość jest edytowana lub modyfikowana, pozycja wskazywana przez TextPointer nie zmienia się względem otaczającego tekstu; przesunięcie tego położenia od początku zawartości jest odpowiednio dostosowywane w celu odzwierciedlenia nowej pozycji względnej w zawartości.When content is edited or modified, the position indicated by a TextPointer does not change relative to the surrounding text; rather the offset of that position from the beginning of content is adjusted correspondingly to reflect the new relative position in content. Na przykład TextPointer, która wskazuje położenie na początku danego akapitu, kontynuuje wskazywanie na początku tego akapitu, nawet gdy zawartość jest wstawiana lub usuwana przed akapitem lub po nim.For example, a TextPointer that indicates a position at the beginning of a given paragraph continues to point to the beginning of that paragraph even when content is inserted or deleted before or after the paragraph.

Klasa TextPointer nie udostępnia żadnych konstruktorów publicznych.The TextPointer class does not provide any public constructors. Wystąpienie TextPointer jest tworzone przy użyciu właściwości lub metod innych obiektów (w tym innych obiektów TextPointer).An instance of TextPointer is created by using properties or methods of other objects (including other TextPointer objects). Poniższa lista zawiera kilka przykładów metod i właściwości, które tworzą i zwracają TextPointer.The following list provides a few examples of methods and properties that create and return a TextPointer. Ta lista nie jest wyczerpująca:This list is not exhaustive:

Właściwości

DocumentEnd

Pobiera TextPointer na końcu zawartości w kontenerze tekstu skojarzonym z bieżącym położeniem.Gets a TextPointer at the end of content in the text container associated with the current position.

DocumentStart

Pobiera TextPointer na początku zawartości w kontenerze tekstu skojarzonym z bieżącym położeniem.Gets a TextPointer at the beginning of content in the text container associated with the current position.

HasValidLayout

Pobiera wartość wskazującą, czy kontener tekstu skojarzony z bieżącym położeniem ma prawidłowy układ (Aktualności).Gets a value that indicates whether the text container associated with the current position has a valid (up-to-date) layout.

IsAtInsertionPosition

Pobiera wartość wskazującą, czy bieżąca pozycja jest pozycją wstawiania.Gets a value that indicates whether the current position is an insertion position.

IsAtLineStartPosition

Pobiera wartość wskazującą, czy bieżące położenie jest na początku wiersza.Gets a value that indicates whether the current position is at the beginning of a line.

LogicalDirection

Pobiera logiczny kierunek skojarzony z bieżącą pozycją, która jest używana do rozróżniania zawartości skojarzonej z bieżącym położeniem.Gets the logical direction associated with the current position which is used to disambiguate content associated with the current position.

Paragraph

Pobiera akapit, który nakłada się na bieżące położenie (jeśli istnieje).Gets the paragraph that scopes the current position, if any.

Parent

Pobiera logiczny element nadrzędny, który ma zakresy w bieżącym położeniu.Gets the logical parent that scopes the current position.

Metody

CompareTo(TextPointer)

Wykonuje porównanie porządkowe między pozycjami określonymi przez bieżącą TextPointer a drugim określonym TextPointer.Performs an ordinal comparison between the positions specified by the current TextPointer and a second specified TextPointer.

DeleteTextInRun(Int32)

Usuwa określoną liczbę znaków z pozycji wskazywanej przez bieżącą TextPointer.Deletes the specified number of characters from the position indicated by the current TextPointer.

Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.Determines whether the specified object is equal to the current object.

(Odziedziczone po Object)
GetAdjacentElement(LogicalDirection)

Zwraca element, jeśli istnieje, który obramowania bieżący TextPointer w określonym kierunku logicznym.Returns the element, if any, that borders the current TextPointer in the specified logical direction.

GetCharacterRect(LogicalDirection)

Zwraca pole ograniczenia (Rect) dla zawartości, która powoduje obramowanie bieżącego TextPointer w określonym kierunku logicznym.Returns a bounding box (Rect) for content that borders the current TextPointer in the specified logical direction.

GetHashCode()

Służy jako domyślna funkcja skrótu.Serves as the default hash function.

(Odziedziczone po Object)
GetInsertionPosition(LogicalDirection)

Zwraca TextPointer do najbliższej pozycji wstawiania w określonym kierunku logicznym.Returns a TextPointer to the closest insertion position in the specified logical direction.

GetLineStartPosition(Int32)

Zwraca TextPointer na początek wiersza, który jest określony względem bieżącego TextPointer.Returns a TextPointer to the beginning of a line that is specified relative to the current TextPointer.

GetLineStartPosition(Int32, Int32)

Zwraca TextPointer na początek wiersza, który jest określony względem bieżącego TextPointer, i zgłasza liczbę pominiętych wierszy.Returns a TextPointer to the beginning of a line that is specified relative to the current TextPointer, and reports how many lines were skipped.

GetNextContextPosition(LogicalDirection)

Zwraca wskaźnik do następnego symbolu w określonym kierunku logicznym.Returns a pointer to the next symbol in the specified logical direction.

GetNextInsertionPosition(LogicalDirection)

Zwraca TextPointer do następnej pozycji wstawiania w określonym kierunku logicznym.Returns a TextPointer to the next insertion position in the specified logical direction.

GetOffsetToPosition(TextPointer)

Zwraca liczbę symboli między bieżącym TextPointer a drugim określonym TextPointer.Returns the count of symbols between the current TextPointer and a second specified TextPointer.

GetPointerContext(LogicalDirection)

Zwraca wskaźnik kategorii dla zawartości sąsiadującej z bieżącą TextPointer w określonym kierunku logicznym.Returns a category indicator for the content adjacent to the current TextPointer in the specified logical direction.

GetPositionAtOffset(Int32)

Zwraca TextPointer do pozycji wskazywanej przez określone przesunięcie, w symbolach, od początku bieżącego TextPointer.Returns a TextPointer to the position indicated by the specified offset, in symbols, from the beginning of the current TextPointer.

GetPositionAtOffset(Int32, LogicalDirection)

Zwraca TextPointer do pozycji wskazywanej przez określone przesunięcie, w symbolach, od początku bieżącego TextPointer i w określonym kierunku.Returns a TextPointer to the position indicated by the specified offset, in symbols, from the beginning of the current TextPointer and in the specified direction.

GetTextInRun(LogicalDirection)

Zwraca ciąg zawierający dowolny tekst przylegający do bieżącego TextPointer w określonym kierunku logicznym.Returns a string containing any text adjacent to the current TextPointer in the specified logical direction.

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

Kopiuje określoną maksymalną liczbę znaków z dowolnego sąsiadującego tekstu w określonym kierunku do tablicy znaków dostarczonej przez obiekt wywołujący.Copies the specified maximum number of characters from any adjacent text in the specified direction into a caller-supplied character array.

GetTextRunLength(LogicalDirection)

Zwraca liczbę znaków Unicode między bieżącym TextPointer i następnym symbolem innym niż tekst w określonym kierunku logicznym.Returns the number of Unicode characters between the current TextPointer and the next non-text symbol, in the specified logical direction.

GetType()

Pobiera Type bieżącego wystąpienia.Gets the Type of the current instance.

(Odziedziczone po Object)
InsertLineBreak()

Wstawia podział wiersza w bieżącym położeniu.Inserts a line break at the current position.

InsertParagraphBreak()

Wstawia podział akapitu w bieżącym położeniu.Inserts a paragraph break at the current position.

InsertTextInRun(String)

Wstawia określony tekst do tekstu Run w bieżącym położeniu.Inserts the specified text into the text Run at the current position.

IsInSameDocument(TextPointer)

Wskazuje, czy określona pozycja znajduje się w tym samym kontenerze tekstu co bieżąca pozycja.Indicates whether the specified position is in the same text container as the current position.

MemberwiseClone()

Tworzy skróconą kopię bieżącego Object.Creates a shallow copy of the current Object.

(Odziedziczone po Object)
ToString()

Ten typ lub element członkowski obsługuje infrastrukturę Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) i nie jest przeznaczony do użycia bezpośrednio w kodzie.This type or member supports the Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) infrastructure and is not intended to be used directly from your code.

Dotyczy

Zobacz też