TextPointer Klasse

Definition

Stellt eine Position in einem FlowDocument oder TextBlock dar.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
Vererbung
TextPointer

Beispiele

Im folgenden Beispiel wird veranschaulicht, wie Sie TextPointer mit einem eine Position direkt innerhalb des ersten Run Elements in einem angegebenen Text Container finden.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

Im folgenden Beispiel wird ein einfacher Suchalgorithmus mithilfe TextPointer von-Funktionen implementiert.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

Hinweise

Mit TextPointer der-Klasse wird die folgende Terminologie eingeführt:The TextPointer class introduces the following terminology:

  • Position: ein TextPointer zeigt immer auf eine Position im Inhalt.Position - Inherently, a TextPointer always points to a position in content. Diese Positionen liegen entweder zwischen Zeichen im Inhalt oder zwischen fortlaufenden Inhalts Element-Tags, die die Struktur für den Inhalt definieren.Such positions either fall between characters in the content, or between flow content element tags that define structure for the content.

  • Aktuelle Position-da eine TextPointer immer eine Position angibt und viele der Vorgänge, die über einen TextPointer ausgeführt werden können, relativ zu der Position sind, auf die TextPointerderzeit von verwiesen wird, ist es sinnvoll, einfach auf das die Position, die TextPointer von einem als aktuelle Positionangegeben wird.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.

  • Einfügeposition: eine Einfügeposition ist eine Position, an der neuer Inhalt hinzugefügt werden kann, ohne dass alle semantischen Regeln für den zugeordneten InhaltInsertion Position - An insertion position is a position where new content may be added without breaking any semantic rules for the associated content. In der Praxis befindet sich eine Einfügemarke an einer beliebigen Stelle im Inhalt, an der ein Caretzeichen positioniert werdenIn practice, an insertion position is anywhere in content where a caret may be positioned. Ein Beispiel für eine gültige TextPointer Position, bei der es sich nicht um eine Einfügeposition Paragraph handelt, ist die Position zwischen zwei angrenzenden Tags (d. h. zwischen dem schließenden Tag des vorangehenden Absatzes und dem öffnenden Tag des nächsten Absatzes).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: bei TextPointer Vorgängen, die Symbole einschließen, gilt Folgendes als Symbol:Symbol - For the purposes of TextPointer operations that involve symbols, any of the following is considered to be a symbol:

    • Ein öffnendes oder Schließ Endes Tag TextElement für ein-Element.An opening or closing tag for a TextElement element.

    • Ein UIElement -Element, das InlineUIContainer in BlockUIContainereinem oder einem enthalten ist.A UIElement element contained within an InlineUIContainer or BlockUIContainer. Beachten Sie, dass UIElement ein solcher Wert immer als genau ein Symbol gezählt wird; alle zusätzlichen Inhalte oder Elemente UIElement , die in der enthalten sind, werden nicht als Symbole gezählt.Note that such a UIElement is always counted as exactly one symbol; any additional content or elements contained by the UIElement are not counted as symbols.

    • Jedes 16-Bit UnicodeUnicode -Zeichen in einem Text Run Element.Each 16-bit UnicodeUnicode character inside of a text Run element.

  • Text Container: ein Text Container ist das Element, das den endgültigen Rahmen für den Flow-Inhalt bildet. die von einem TextPointer gekennzeichnete Position liegt immer innerhalb eines Text Containers.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. Derzeit muss ein Text Container entweder ein FlowDocument oder ein TextBlocksein.Currently, a text container must be either a FlowDocument or a TextBlock. Im Allgemeinen werden Vorgänge zwischen TextPointer Instanzen in unterschiedlichen Text Containern nicht unterstützt.Generally speaking, operations between TextPointer instances in different text containers are not supported.

  • Document: der Inhalt in einem Text Container wird als Dokumentbezeichnet, wie in der IsInSameDocument -Methode und den DocumentStart -und DocumentEnd -Eigenschaften.Document - The content in a text container is referred to as a document, as in the IsInSameDocument method and the DocumentStart and DocumentEnd properties.

Die TextPointer -Klasse soll das Traversieren und manipulieren von Inhalten erleichtern, die durch Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) fortlaufende Inhaltselemente dargestellt werden. im Allgemeinen werden solche TextElementElemente von abgeleitet.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. Zu den Vorgängen, TextPointer die von vereinfacht werden, zählen die folgenden:Some of the operations that TextPointer facilitates include the following:

Die Position, LogicalDirection die von einem TextPointer -Objekt angegeben wird, ist unveränderlich.The position and LogicalDirection indicated by a TextPointer object are immutable. Wenn Inhalt bearbeitet oder geändert wird, ändert sich die von einem TextPointer angegebener Position nicht relativ zum umgebenden Text; stattdessen wird der Offset dieser Position vom Anfang des Inhalts entsprechend angepasst, um die neue relative Position in anzugeben. inhaltliche.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. Beispielsweise zeigt ein TextPointer -Wert, der eine Position am Anfang eines bestimmten Absatzes angibt, weiterhin auf den Anfang dieses Absatzes, auch wenn Inhalt vor oder nach dem Absatz eingefügt oder gelöscht wird.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.

Die TextPointer -Klasse stellt keine öffentlichen Konstruktoren bereit.The TextPointer class does not provide any public constructors. Eine Instanz von TextPointer wird mithilfe von Eigenschaften oder Methoden anderer Objekte (einschließlich anderer TextPointer Objekte) erstellt.An instance of TextPointer is created by using properties or methods of other objects (including other TextPointer objects). Die folgende Liste enthält einige Beispiele für Methoden und Eigenschaften, mit denen ein TextPointererstellt und zurückgegeben wird.The following list provides a few examples of methods and properties that create and return a TextPointer. Diese Liste ist nicht vollständig:This list is not exhaustive:

Eigenschaften

DocumentEnd

Ruft im der aktuellen Position zugeordneten Textcontainer am Ende des Inhalts einen TextPointer ab.Gets a TextPointer at the end of content in the text container associated with the current position.

DocumentStart

Ruft im der aktuellen Position zugeordneten Textcontainer am Anfang des Inhalts einen TextPointer ab.Gets a TextPointer at the beginning of content in the text container associated with the current position.

HasValidLayout

Ruft einen Wert ab, mit dem angegeben wird, ob der der aktuellen Position zugeordnete Textcontainer über ein gültiges (aktuelles) Layout verfügt.Gets a value that indicates whether the text container associated with the current position has a valid (up-to-date) layout.

IsAtInsertionPosition

Ruft einen Wert ab, mit dem angegeben wird, ob die aktuelle Position eine Einfügeposition ist.Gets a value that indicates whether the current position is an insertion position.

IsAtLineStartPosition

Ruft einen Wert ab, mit dem angegeben wird, ob sich die aktuelle Position am Anfang einer Zeile befindet.Gets a value that indicates whether the current position is at the beginning of a line.

LogicalDirection

Ruft die der aktuellen Position zugeordnete logische Richtung ab, mit der der aktuellen Position zugeordneter Inhalt unterschieden werden kann.Gets the logical direction associated with the current position which is used to disambiguate content associated with the current position.

Paragraph

Ruft den Absatz ab, mit dem ggf. die aktuelle Position festgelegt wird.Gets the paragraph that scopes the current position, if any.

Parent

Ruft das logische übergeordnete Element ab, mit dem die aktuelle Position festgelegt wird.Gets the logical parent that scopes the current position.

Methoden

CompareTo(TextPointer)

Führt einen Ordinalvergleich der angegebenen Positionen des aktuellen TextPointer und eines anderen TextPointer aus.Performs an ordinal comparison between the positions specified by the current TextPointer and a second specified TextPointer.

DeleteTextInRun(Int32)

Löscht die angegebene Anzahl von Zeichen ab der Position, die vom aktuellen TextPointer angegeben wird.Deletes the specified number of characters from the position indicated by the current TextPointer.

Equals(Object)

Ermittelt, ob das angegebene Objekt und das aktuelle Objekt gleich sind.Determines whether the specified object is equal to the current object.

(Geerbt von Object)
GetAdjacentElement(LogicalDirection)

Gibt ggf. das Element zurück, das in der angegebenen logischen Richtung an den aktuellen TextPointer grenzt.Returns the element, if any, that borders the current TextPointer in the specified logical direction.

GetCharacterRect(LogicalDirection)

Gibt ein umgebendes Feld (Rect) für Inhalt zurück, der in der angegebenen logischen Richtung an den aktuellen TextPointer grenzt.Returns a bounding box (Rect) for content that borders the current TextPointer in the specified logical direction.

GetHashCode()

Dient als die Standard-HashfunktionServes as the default hash function.

(Geerbt von Object)
GetInsertionPosition(LogicalDirection)

Gibt in der angegebenen logischen Richtung an der nächsten Einfügeposition einen TextPointer zurück.Returns a TextPointer to the closest insertion position in the specified logical direction.

GetLineStartPosition(Int32)

Gibt einen TextPointer auf den Anfang einer Zeile zurück, die relativ zum aktuellen TextPointer angegeben wird.Returns a TextPointer to the beginning of a line that is specified relative to the current TextPointer.

GetLineStartPosition(Int32, Int32)

Gibt einen TextPointer auf den Anfang einer Zeile zurück, die relativ zum aktuellen TextPointer angegeben wird, und gibt an, wie viele Zeilen übersprungen wurden.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)

Gibt einen Zeiger auf das nächste Symbol in der angegebenen logischen Richtung zurück.Returns a pointer to the next symbol in the specified logical direction.

GetNextInsertionPosition(LogicalDirection)

Gibt in der angegebenen logischen Richtung an der nächsten Einfügeposition einen TextPointer zurück.Returns a TextPointer to the next insertion position in the specified logical direction.

GetOffsetToPosition(TextPointer)

Gibt die Anzahl der Symbole zwischen dem aktuellen TextPointer und einem weiteren bestimmten TextPointer zurück.Returns the count of symbols between the current TextPointer and a second specified TextPointer.

GetPointerContext(LogicalDirection)

Gibt für den Inhalt neben dem aktuellen TextPointer in der angegebenen logischen Richtung einen Kategorieindikator zurück.Returns a category indicator for the content adjacent to the current TextPointer in the specified logical direction.

GetPositionAtOffset(Int32)

Gibt einen TextPointer auf die Position zurück, die in Symbolen durch den ab dem Anfang des aktuellen TextPointer bestimmten Offset angegeben wird.Returns a TextPointer to the position indicated by the specified offset, in symbols, from the beginning of the current TextPointer.

GetPositionAtOffset(Int32, LogicalDirection)

Gibt einen TextPointer auf die Position zurück, die in Symbolen durch den ab dem Anfang des aktuellen TextPointer bestimmten Offset und in der angegebenen Richtung angegeben wird.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)

Gibt eine Zeichenfolge zurück, die Text enthält, der sich in der angegebenen logischen Richtung neben dem aktuellen TextPointer befindet.Returns a string containing any text adjacent to the current TextPointer in the specified logical direction.

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

Kopiert die angegebene maximale Anzahl von Zeichen aus benachbartem Text in der angegebenen Richtung in ein vom Aufrufer bereitgestelltes Zeichenarray.Copies the specified maximum number of characters from any adjacent text in the specified direction into a caller-supplied character array.

GetTextRunLength(LogicalDirection)

Gibt in der angegebenen logischen Richtung die Anzahl der Unicode-Zeichen zwischen dem aktuellen TextPointer und dem nächsten Nicht-Text-Symbol zurück.Returns the number of Unicode characters between the current TextPointer and the next non-text symbol, in the specified logical direction.

GetType()

Ruft den Type der aktuellen Instanz ab.Gets the Type of the current instance.

(Geerbt von Object)
InsertLineBreak()

Fügt an der aktuellen Position einen Zeilenumbruch ein.Inserts a line break at the current position.

InsertParagraphBreak()

Fügt an der aktuellen Position einen Absatzwechsel ein.Inserts a paragraph break at the current position.

InsertTextInRun(String)

Fügt den angegebenen Text an der aktuellen Position in den Run des Texts ein.Inserts the specified text into the text Run at the current position.

IsInSameDocument(TextPointer)

Gibt an, ob sich die angegebene Position im gleichen Textcontainer wie die aktuelle Position befindet.Indicates whether the specified position is in the same text container as the current position.

MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.Creates a shallow copy of the current Object.

(Geerbt von Object)
ToString()

Dieser Typ oder Member unterstützt die Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF)-Infrastruktur und ist nicht für die direkte Verwendung im Code vorgesehen.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.

Gilt für:

Siehe auch