TextPointer TextPointer TextPointer TextPointer Class

Définition

Représente une position dans un FlowDocument ou 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
Héritage

Exemples

L’exemple suivant montre comment utiliser un TextPointer pour rechercher une position juste à l’intérieur du premier Run élément d’un conteneur de texte spécifié.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

L’exemple suivant implémente un algorithme de recherche TextPointer simpliste à l’aide de fonctionnalités.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

Remarques

La TextPointer classe présente la terminologie suivante :The TextPointer class introduces the following terminology:

  • Position : fondamentalement, un TextPointer pointe toujours vers une position dans le contenu.Position - Inherently, a TextPointer always points to a position in content. De tels emplacements se situent entre des caractères dans le contenu ou entre des balises d’élément de contenu de Flow qui définissent la structure du contenu.Such positions either fall between characters in the content, or between flow content element tags that define structure for the content.

  • Position actuelle : étant donné TextPointer qu’un indique toujours une position et que la plupart des opérations qui peuvent être effectuées par TextPointer le biais d’un sont relatives à la position actuellement TextPointerréférencée par le, il est logique de faire simplement référence à position indiquée par un TextPointer comme position actuelle.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.

  • Position d’insertion : une position d’insertion est une position où un nouveau contenu peut être ajouté sans rompre les règles sémantiques pour le contenu associé.Insertion Position - An insertion position is a position where new content may be added without breaking any semantic rules for the associated content. Dans la pratique, une position d’insertion se trouve n’importe où dans le contenu où un point d’insertion peut être positionné.In practice, an insertion position is anywhere in content where a caret may be positioned. Un exemple d’une position TextPointer valide qui n’est pas une position d’insertion est la position entre Paragraph deux balises adjacentes (c’est-à-dire entre la balise de fermeture du paragraphe précédent et la balise d’ouverture du paragraphe suivant).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).

  • Symbole-pour les TextPointer opérations qui impliquent des symboles, l’un des éléments suivants est considéré comme un symbole:Symbol - For the purposes of TextPointer operations that involve symbols, any of the following is considered to be a symbol:

    • Balise d’ouverture ou de fermeture TextElement d’un élément.An opening or closing tag for a TextElement element.

    • Élément contenu dans un InlineUIContainer ou BlockUIContainerun. UIElementA UIElement element contained within an InlineUIContainer or BlockUIContainer. Notez que ce type UIElement est toujours compté comme un seul symbole ; tout contenu ou élément supplémentaire contenu dans le UIElement n’est pas compté comme des symboles.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.

    • Chaque caractère de 16 UnicodeUnicode bits à l’intérieur d' Run un élément de texte.Each 16-bit UnicodeUnicode character inside of a text Run element.

  • Conteneur de texte : un conteneur de texte est l’élément qui forme la bordure finale du contenu dynamique. la position indiquée par un TextPointer est toujours comprise dans un conteneur de texte.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. À l’heure actuelle, un conteneur de texte FlowDocument doit être TextBlockun ou un.Currently, a text container must be either a FlowDocument or a TextBlock. En règle générale, les TextPointer opérations entre des instances dans des conteneurs de texte différents ne sont pas prises en charge.Generally speaking, operations between TextPointer instances in different text containers are not supported.

  • Document-le contenu d’un conteneur de texte est appelé document, comme dans la IsInSameDocument méthode et les DocumentStart propriétés et DocumentEnd .Document - The content in a text container is referred to as a document, as in the IsInSameDocument method and the DocumentStart and DocumentEnd properties.

La TextPointer classe est destinée à faciliter le parcours et la manipulation de contenu représenté par Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) les éléments de contenu de Flow ; en général, ces éléments TextElementdérivent de.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. Voici quelques-unes des TextPointer opérations qui facilitent les opérations suivantes :Some of the operations that TextPointer facilitates include the following:

La position et LogicalDirection l’indication d' TextPointer un objet sont immuables.The position and LogicalDirection indicated by a TextPointer object are immutable. Lorsque le contenu est modifié ou modifié, la position indiquée par TextPointer un ne change pas par rapport au texte environnant ; au lieu que le décalage de cette position à partir du début du contenu soit ajusté en conséquence pour refléter la nouvelle position relative dans humidité.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. Par exemple, un TextPointer qui indique qu’une position au début d’un paragraphe donné continue à pointer vers le début de ce paragraphe même si le contenu est inséré ou supprimé avant ou après le paragraphe.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.

La TextPointer classe ne fournit pas de constructeurs publics.The TextPointer class does not provide any public constructors. Une instance de TextPointer est créée à l’aide de propriétés ou de méthodes d’autres objets TextPointer (y compris d’autres objets).An instance of TextPointer is created by using properties or methods of other objects (including other TextPointer objects). La liste suivante fournit quelques exemples de méthodes et de propriétés qui créent et retournent un TextPointer.The following list provides a few examples of methods and properties that create and return a TextPointer. Cette liste n’est pas exhaustive :This list is not exhaustive:

Propriétés

DocumentEnd DocumentEnd DocumentEnd DocumentEnd

Obtient un TextPointer à la fin du contenu dans le conteneur de texte associé à la position actuelle.Gets a TextPointer at the end of content in the text container associated with the current position.

DocumentStart DocumentStart DocumentStart DocumentStart

Obtient un TextPointer au début du contenu dans le conteneur de texte associé à la position actuelle.Gets a TextPointer at the beginning of content in the text container associated with the current position.

HasValidLayout HasValidLayout HasValidLayout HasValidLayout

Obtient une valeur indiquant si le conteneur de texte associé à la position actuelle a une disposition valide (mise à jour).Gets a value that indicates whether the text container associated with the current position has a valid (up-to-date) layout.

IsAtInsertionPosition IsAtInsertionPosition IsAtInsertionPosition IsAtInsertionPosition

Obtient une valeur indiquant si la position actuelle est une position d'insertion.Gets a value that indicates whether the current position is an insertion position.

IsAtLineStartPosition IsAtLineStartPosition IsAtLineStartPosition IsAtLineStartPosition

Obtient une valeur indiquant si la position actuelle est au début d'une ligne.Gets a value that indicates whether the current position is at the beginning of a line.

LogicalDirection LogicalDirection LogicalDirection LogicalDirection

Obtient la direction logique associée à la position actuelle utilisée pour lever l'ambiguïté du contenu associé à la position actuelle.Gets the logical direction associated with the current position which is used to disambiguate content associated with the current position.

Paragraph Paragraph Paragraph Paragraph

Obtient le paragraphe dans la portée de la position actuelle, s'il en est.Gets the paragraph that scopes the current position, if any.

Parent Parent Parent Parent

Obtient le parent logique portant sur la position actuelle.Gets the logical parent that scopes the current position.

Méthodes

CompareTo(TextPointer) CompareTo(TextPointer) CompareTo(TextPointer) CompareTo(TextPointer)

Effectuer une comparaison ordinale entre les positions spécifiées par le TextPointer actuel et une seconde spécifié par TextPointer.Performs an ordinal comparison between the positions specified by the current TextPointer and a second specified TextPointer.

DeleteTextInRun(Int32) DeleteTextInRun(Int32) DeleteTextInRun(Int32) DeleteTextInRun(Int32)

Supprime le nombre spécifié de caractères de la position indiquée par le TextPointeractuel.Deletes the specified number of characters from the position indicated by the current TextPointer.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Détermine si l'objet spécifié est identique à l'objet actuel.Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetAdjacentElement(LogicalDirection) GetAdjacentElement(LogicalDirection) GetAdjacentElement(LogicalDirection) GetAdjacentElement(LogicalDirection)

Renvoie l'élément, s'il en est, qui limite le TextPointer actuel dans la direction logique spécifiée.Returns the element, if any, that borders the current TextPointer in the specified logical direction.

GetCharacterRect(LogicalDirection) GetCharacterRect(LogicalDirection) GetCharacterRect(LogicalDirection) GetCharacterRect(LogicalDirection)

Renvoie un cadre englobant (Rect) pour du contenu en bordure du TextPointer actuel dans la direction logique spécifiée.Returns a bounding box (Rect) for content that borders the current TextPointer in the specified logical direction.

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Fait office de fonction de hachage par défaut.Serves as the default hash function.

(Inherited from Object)
GetInsertionPosition(LogicalDirection) GetInsertionPosition(LogicalDirection) GetInsertionPosition(LogicalDirection) GetInsertionPosition(LogicalDirection)

Renvoie un TextPointer à la position d'insertion la plus proche dans la direction logique spécifiée.Returns a TextPointer to the closest insertion position in the specified logical direction.

GetLineStartPosition(Int32) GetLineStartPosition(Int32) GetLineStartPosition(Int32) GetLineStartPosition(Int32)

Renvoie un TextPointer au début d'une ligne spécifiée par rapport au TextPointer actuel.Returns a TextPointer to the beginning of a line that is specified relative to the current TextPointer.

GetLineStartPosition(Int32, Int32) GetLineStartPosition(Int32, Int32) GetLineStartPosition(Int32, Int32) GetLineStartPosition(Int32, Int32)

Renvoie un TextPointer au début d'une ligne spécifiée par rapport au TextPointeractuel, et renseigne sur le nombre de lignes ignorées.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) GetNextContextPosition(LogicalDirection) GetNextContextPosition(LogicalDirection) GetNextContextPosition(LogicalDirection)

Renvoie un pointeur vers le prochain symbole dans la direction logique spécifiée.Returns a pointer to the next symbol in the specified logical direction.

GetNextInsertionPosition(LogicalDirection) GetNextInsertionPosition(LogicalDirection) GetNextInsertionPosition(LogicalDirection) GetNextInsertionPosition(LogicalDirection)

Renvoie un TextPointer à la prochaine position d'insertion dans la direction logique spécifiée.Returns a TextPointer to the next insertion position in the specified logical direction.

GetOffsetToPosition(TextPointer) GetOffsetToPosition(TextPointer) GetOffsetToPosition(TextPointer) GetOffsetToPosition(TextPointer)

Renvoie le compte de symboles entre le TextPointer actuel et un second TextPointerspécifié.Returns the count of symbols between the current TextPointer and a second specified TextPointer.

GetPointerContext(LogicalDirection) GetPointerContext(LogicalDirection) GetPointerContext(LogicalDirection) GetPointerContext(LogicalDirection)

Renvoie un indicateur de catégorie pour le contenu adjacent au TextPointer actuel dans la direction logique spécifiée.Returns a category indicator for the content adjacent to the current TextPointer in the specified logical direction.

GetPositionAtOffset(Int32) GetPositionAtOffset(Int32) GetPositionAtOffset(Int32) GetPositionAtOffset(Int32)

Renvoie un TextPointer à la position indiquée par l'offset spécifié, dans les symboles, à partir du début du TextPointeractuel.Returns a TextPointer to the position indicated by the specified offset, in symbols, from the beginning of the current TextPointer.

GetPositionAtOffset(Int32, LogicalDirection) GetPositionAtOffset(Int32, LogicalDirection) GetPositionAtOffset(Int32, LogicalDirection) GetPositionAtOffset(Int32, LogicalDirection)

Renvoie un TextPointer à la position indiquée par l'offset spécifié, dans les symboles, à partir du début du TextPointeractuel et dans la direction spécifiée.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) GetTextInRun(LogicalDirection) GetTextInRun(LogicalDirection) GetTextInRun(LogicalDirection)

Renvoie une chaîne contenant tout texte adjacent au TextPointer actuel dans la direction logique spécifiée.Returns a string containing any text adjacent to the current TextPointer in the specified logical direction.

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

Copie le nombre maximal spécifié de caractères à partir de tout texte adjacent dans la direction spécifiée dans un tableau de caractères fourni par un appelant.Copies the specified maximum number of characters from any adjacent text in the specified direction into a caller-supplied character array.

GetTextRunLength(LogicalDirection) GetTextRunLength(LogicalDirection) GetTextRunLength(LogicalDirection) GetTextRunLength(LogicalDirection)

Renvoie le nombre de caractères Unicode entre le TextPointer actuel et le prochain symbole de non-texte, dans la direction logique spécifiée.Returns the number of Unicode characters between the current TextPointer and the next non-text symbol, in the specified logical direction.

GetType() GetType() GetType() GetType()

Obtient le Type de l'instance actuelle.Gets the Type of the current instance.

(Inherited from Object)
InsertLineBreak() InsertLineBreak() InsertLineBreak() InsertLineBreak()

Insère un saut de ligne à la position actuelle.Inserts a line break at the current position.

InsertParagraphBreak() InsertParagraphBreak() InsertParagraphBreak() InsertParagraphBreak()

Insère un arrêt de paragraphe à la position actuelle.Inserts a paragraph break at the current position.

InsertTextInRun(String) InsertTextInRun(String) InsertTextInRun(String) InsertTextInRun(String)

Insère le texte spécifié dans le texte Run à la position actuelle.Inserts the specified text into the text Run at the current position.

IsInSameDocument(TextPointer) IsInSameDocument(TextPointer) IsInSameDocument(TextPointer) IsInSameDocument(TextPointer)

Indique si la position spécifiée est dans le même conteneur de texte que la position actuelle.Indicates whether the specified position is in the same text container as the current position.

MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Crée une copie superficielle de l'objet Object actuel.Creates a shallow copy of the current Object.

(Inherited from Object)
ToString() ToString() ToString() ToString()

Ce type ou membre prend en charge l’infrastructure Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) et n’est pas destiné à être utilisé directement à partir de votre code.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.

S’applique à

Voir aussi