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 dans le premier Run élément dans 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 simple à l’aide de TextPointer installations.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

Le TextPointer classe introduit la terminologie suivante :The TextPointer class introduces the following terminology:

  • Position fondamentale - un TextPointer pointe toujours vers un position dans le contenu.Position - Inherently, a TextPointer always points to a position in content. De telles positions tombent entre des caractères dans le contenu ou flux de contenu élément balises qui définissent la structure pour le contenu.Such positions either fall between characters in the content, or between flow content element tags that define structure for the content.

  • Position actuelle – comme un TextPointer indique toujours une position et parce qu’un grand nombre des opérations qui peuvent être effectuées via un TextPointer sont par rapport à la position actuellement vers lequel pointée le TextPointer, il est judicieux d’appeler le position indiquée par un TextPointer en tant que le 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ù le nouveau contenu peut être ajouté sans 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 est 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 de valide TextPointer position qui n’est pas une position d’insertion est la position entre deux adjacents Paragraph balises (autrement dit, entre la balise de fermeture du paragraphe précédent et de 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 - dans le cadre de TextPointer les opérations qui impliquent des symboles, les é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:

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

    • Un UIElement élément contenu dans un InlineUIContainer ou BlockUIContainer.A UIElement element contained within an InlineUIContainer or BlockUIContainer. Notez que ce un UIElement est toujours comptabilisé comme un seul symbole ; tout contenu supplémentaire ou les éléments contenus par le UIElement ne sont pas comptés 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 16 bits UnicodeUnicode caractère à l’intérieur d’un texte Run élément.Each 16-bit UnicodeUnicode character inside of a text Run element.

  • Conteneur de texte - A conteneur de texte est l’élément qui constitue l’ultime limite du contenu de flux à portée de main ; la position indiquée par un TextPointer tombe toujours 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. Actuellement, un conteneur de texte doit être un FlowDocument ou un TextBlock.Currently, a text container must be either a FlowDocument or a TextBlock. En règle générale, les opérations entre TextPointer instances dans différents conteneurs de texte ne sont pas pris en charge.Generally speaking, operations between TextPointer instances in different text containers are not supported.

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

Le TextPointer classe est destinée à faciliter le parcours et manipulation de contenu qui est représenté par Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) éléments de flux ; en général, de tels éléments dérivent 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. Certaines opérations qui TextPointer facilite incluent les éléments suivants :Some of the operations that TextPointer facilitates include the following:

La position et LogicalDirection indiquée par un TextPointer 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 un TextPointer ne change pas par rapport au texte environnant ; au lieu de cela, le décalage de cette position à partir du début du contenu est ajusté en conséquence pour refléter la nouvelle position relative dans contenu.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 une position au début d’un paragraphe donné continue à pointer vers le début de ce paragraphe, même lorsque 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.

Le TextPointer classe ne fournit pas de constructeurs publics.The TextPointer class does not provide any public constructors. Une instance de TextPointer est créé à l’aide des propriétés ou méthodes d’autres objets (y compris d’autres TextPointer 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 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