TextPointer Classe

Définition

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

Exemples

L’exemple suivant montre comment utiliser une TextPointer position juste à l’intérieur du premier Run élément dans un conteneur de texte spécifié.

// 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 simpliste à l’aide TextPointer d’installations.

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

  • Position : intrinsèquement, une TextPointer position pointe toujours vers une position dans le contenu. Ces positions varient entre les caractères du contenu ou entre les balises d’élément de contenu de flux qui définissent la structure du contenu.

  • Position actuelle : étant donné qu’une TextPointer position indique toujours une position et que de nombreuses opérations pouvant être effectuées par un TextPointer sont relatives à la position actuellement pointée par le TextPointer, il est logique de simplement faire référence à la position indiquée par une TextPointer position comme position actuelle.

  • Position d’insertion : une position d’insertion est une position où le nouveau contenu peut être ajouté sans interrompre les règles sémantiques du contenu associé. Dans la pratique, une position d’insertion est n’importe où dans le contenu où un caret peut être positionné. Un exemple de position valide TextPointer qui n’est pas une position d’insertion est la position entre deux balises adjacentes Paragraph (autrement dit, entre la balise fermante du paragraphe précédent et la balise d’ouverture du paragraphe suivant).

  • Symbole : à des fins d’opérations TextPointer qui impliquent des symboles, l’un des éléments suivants est considéré comme un symbole :

    • Balise ouvrante ou fermante pour un TextElement élément.

    • Élément UIElement contenu dans un InlineUIContainer ou BlockUIContainer. Notez qu’une UIElement telle valeur est toujours comptabilisée comme un symbole exactement unique ; tout contenu ou élément supplémentaire contenu par le UIElement fichier n’est pas comptabilisé comme symbole.

    • Chaque caractère Unicode 16 bits à l’intérieur d’un élément de texte Run .

  • Conteneur de texte - Un conteneur de texte est l’élément qui forme la bordure ultime du contenu de flux à la main; la position indiquée par un TextPointer conteneur de texte se trouve toujours dans un conteneur de texte. Actuellement, un conteneur de texte doit être un FlowDocument ou un TextBlock. En règle générale, les opérations entre TextPointer les instances dans différents conteneurs de texte ne sont pas prises en charge.

  • Document : le contenu d’un conteneur de texte est appelé document, comme dans la IsInSameDocument méthode et les DocumentStart DocumentEnd propriétés.

La TextPointer classe est destinée à faciliter la traversée et la manipulation du contenu représenté par des éléments de contenu de flux Windows Presentation Foundation (WPF) ; en général, ces éléments dérivent de TextElement. Voici quelques-unes des opérations qui TextPointer facilitent les opérations suivantes :

  • Effectuez une comparaison ordinale de la position actuelle avec une seconde position spécifiée. Consultez la CompareTo méthode.

  • Déterminez le type de contenu adjacent à la position actuelle dans une direction spécifiée. Consultez la méthode et TextPointerContext l’énumérationGetPointerContext.

  • Obtenez les TextElement étendues ou est adjacente à la position actuelle. Voir Paragraph et la GetAdjacentElement méthode.

  • Obtenez le conteneur de texte qui étend le document actif. Voir la propriété Parent.

  • Obtenez un nombre spécifié de caractères précédents ou suivant la position actuelle. Consultez la GetTextInRun méthode.

  • Insérez une chaîne de caractères à la position actuelle. Consultez la InsertTextInRun méthode.

  • Recherchez les limites de ligne dans le contenu. Consultez la méthode et IsAtLineStartPosition la GetLineStartPosition propriété.

  • Traduire entre TextPointer les positions et les décalages de symboles en contenu. Consultez les méthodes et GetPositionAtOffset les GetOffsetToPosition méthodes.

  • Effectuez des tests d’accès visuel en traduisant entre une TextPointer position et une Point représentation des coordonnées relatives.

  • Recherchez une position d’insertion à proximité ou vérifiez si la position actuelle est une position d’insertion. Consultez les méthodes et GetNextInsertionPosition les GetInsertionPosition méthodes et la IsAtInsertionPosition propriété.

La position et LogicalDirection indiquée par un TextPointer objet sont immuables. Lorsque le contenu est modifié ou modifié, la position indiquée par un TextPointer n’est pas modifiée par rapport au texte environnant; plutôt le décalage de cette position depuis le début du contenu est ajusté correspondant pour refléter la nouvelle position relative dans le contenu. Par exemple, un TextPointer élément qui indique une position au début d’un paragraphe donné continue de pointer vers le début de ce paragraphe, même lorsque le contenu est inséré ou supprimé avant ou après le paragraphe.

La TextPointer classe ne fournit aucun constructeur public. Une instance d’un TextPointer objet est créée à l’aide de propriétés ou de méthodes d’autres objets (y compris d’autres TextPointer objets). La liste suivante fournit quelques exemples de méthodes et de propriétés qui créent et retournent un TextPointer. Cette liste n’est pas exhaustive :

Propriétés

DocumentEnd

Obtient un TextPointer à la fin du contenu dans le conteneur de texte associé à la position actuelle.

DocumentStart

Obtient un TextPointer au début du contenu dans le conteneur de texte associé à la position actuelle.

HasValidLayout

Obtient une valeur indiquant si le conteneur de texte associé à la position actuelle a une disposition valide (mise à jour).

IsAtInsertionPosition

Obtient une valeur indiquant si la position actuelle est une position d'insertion.

IsAtLineStartPosition

Obtient une valeur indiquant si la position actuelle est au début d'une ligne.

LogicalDirection

Obtient la direction logique associée à la position actuelle utilisée pour lever l'ambiguïté du contenu associé à la position actuelle.

Paragraph

Obtient le paragraphe dans la portée de la position actuelle, s'il en est.

Parent

Obtient le parent logique portant sur la position actuelle.

Méthodes

CompareTo(TextPointer)

Effectuer une comparaison ordinale entre les positions spécifiées par le TextPointer actuel et une seconde spécifié par TextPointer.

DeleteTextInRun(Int32)

Supprime le nombre spécifié de caractères de la position indiquée par le TextPointeractuel.

Equals(Object)

Détermine si l'objet spécifié est égal à l'objet actuel.

(Hérité de Object)
GetAdjacentElement(LogicalDirection)

Renvoie l'élément, s'il en est, qui limite le TextPointer actuel dans la direction logique spécifiée.

GetCharacterRect(LogicalDirection)

Renvoie un cadre englobant (Rect) pour du contenu en bordure du TextPointer actuel dans la direction logique spécifiée.

GetHashCode()

Fait office de fonction de hachage par défaut.

(Hérité de Object)
GetInsertionPosition(LogicalDirection)

Renvoie un TextPointer à la position d'insertion la plus proche dans la direction logique spécifiée.

GetLineStartPosition(Int32)

Renvoie un TextPointer au début d'une ligne spécifiée par rapport au TextPointer actuel.

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.

GetNextContextPosition(LogicalDirection)

Renvoie un pointeur vers le prochain symbole dans la direction logique spécifiée.

GetNextInsertionPosition(LogicalDirection)

Renvoie un TextPointer à la prochaine position d'insertion dans la direction logique spécifiée.

GetOffsetToPosition(TextPointer)

Renvoie le compte de symboles entre le TextPointer actuel et un second TextPointerspécifié.

GetPointerContext(LogicalDirection)

Renvoie un indicateur de catégorie pour le contenu adjacent au TextPointer actuel dans la direction logique spécifiée.

GetPositionAtOffset(Int32)

Renvoie un TextPointer à la position indiquée par l'offset spécifié, dans les symboles, à partir du début du TextPointeractuel.

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.

GetTextInRun(LogicalDirection)

Renvoie une chaîne contenant tout texte adjacent au TextPointer actuel dans la direction logique spécifiée.

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.

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.

GetType()

Obtient le Type de l'instance actuelle.

(Hérité de Object)
InsertLineBreak()

Insère un saut de ligne à la position actuelle.

InsertParagraphBreak()

Insère un arrêt de paragraphe à la position actuelle.

InsertTextInRun(String)

Insère le texte spécifié dans le texte Run à la position actuelle.

IsInSameDocument(TextPointer)

Indique si la position spécifiée est dans le même conteneur de texte que la position actuelle.

MemberwiseClone()

Crée une copie superficielle du Object actuel.

(Hérité de Object)
ToString()

Ce type ou ce membre prend en charge l’infrastructure Windows Presentation Foundation (WPF), et n’est pas destiné à être utilisé directement à partir de votre code.

S’applique à

Voir aussi