Cet article a fait l'objet d'une traduction automatique. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. Informations supplémentaires.
Traduction
Source
Ce sujet n'a pas encore été évalué - Évaluez ce sujet

TextPointer, classe

Représente une position dans un FlowDocument ou TextBlock.

Espace de noms :  System.Windows.Documents
Assembly :  PresentationFramework (dans PresentationFramework.dll)
public class TextPointer : ContentPosition

Le type TextPointer expose les membres suivants.

  NomDescription
Propriété publiqueDocumentEndObtient un TextPointer à la fin du contenu dans le conteneur de texte associé à la position actuelle.
Propriété publiqueDocumentStartObtient un TextPointer au début du contenu dans le conteneur de texte associé à la position actuelle.
Propriété publiqueHasValidLayoutObtient une valeur indiquant si le conteneur de texte associé à la position actuelle a une disposition valide (mise à jour).
Propriété publiqueIsAtInsertionPositionObtient une valeur indiquant si la position actuelle est une position d'insertion.
Propriété publiqueIsAtLineStartPositionObtient une valeur indiquant si la position actuelle est au début d'une ligne.
Propriété publiqueLogicalDirectionObtient la direction logique associée à la position actuelle utilisée pour lever l'ambiguïté du contenu associé à la position actuelle.
Propriété publiqueParagraphObtient le paragraphe dans la portée de la position actuelle, s'il en est.
Propriété publiqueParentObtient le parent logique portant sur la position actuelle.
Début
  NomDescription
Méthode publiqueCompareToEffectuer une comparaison ordinale entre les positions spécifiées par le TextPointer actuel et une seconde spécifié par TextPointer.
Méthode publiqueDeleteTextInRunSupprime le nombre spécifié de caractères de la position indiquée par le TextPointeractuel.
Méthode publiqueEquals(Object)Détermine si l'objet spécifié est identique à l'objet actuel. (Hérité de Object.)
Méthode protégéeFinalize Autorise un objet à tenter de libérer des ressources et d'exécuter d'autres opérations de nettoyage avant qu'il ne soit récupéré par l'opération garbage collection. (Hérité de Object.)
Méthode publiqueGetAdjacentElementRenvoie l'élément, s'il en est, qui limite le TextPointer actuel dans la direction logique spécifiée.
Méthode publiqueGetCharacterRectRenvoie un cadre englobant (Rect) pour du contenu en bordure du TextPointer actuel dans la direction logique spécifiée.
Méthode publiqueGetHashCodeSert de fonction de hachage pour un type particulier. (Hérité de Object.)
Méthode publiqueGetInsertionPositionRenvoie un TextPointer à la position d'insertion la plus proche dans la direction logique spécifiée.
Méthode publiqueGetLineStartPosition(Int32)Renvoie un TextPointer au début d'une ligne spécifiée par rapport au TextPointer actuel.
Méthode publiqueGetLineStartPosition(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.
Méthode publiqueGetNextContextPositionRenvoie un pointeur vers le prochain symbole dans la direction logique spécifiée.
Méthode publiqueGetNextInsertionPositionRenvoie un TextPointer à la prochaine position d'insertion dans la direction logique spécifiée.
Méthode publiqueGetOffsetToPositionRenvoie le compte de symboles entre le TextPointer actuel et un second TextPointerspécifié.
Méthode publiqueGetPointerContextRenvoie un indicateur de catégorie pour le contenu adjacent au TextPointer actuel dans la direction logique spécifiée.
Méthode publiqueGetPositionAtOffset(Int32)Renvoie un TextPointer à la position indiquée par l'offset spécifié, dans les symboles, à partir du début du TextPointeractuel.
Méthode publiqueGetPositionAtOffset(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.
Méthode publiqueGetTextInRun(LogicalDirection)Renvoie une chaîne contenant tout texte adjacent au TextPointer actuel dans la direction logique spécifiée.
Méthode publiqueGetTextInRun(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.
Méthode publiqueGetTextRunLengthRenvoie le nombre de caractères Unicode entre le TextPointer actuel et le prochain symbole de non-texte, dans la direction logique spécifiée.
Méthode publiqueGetTypeObtient le Type de l'instance actuelle. (Hérité de Object.)
Méthode publiqueInsertLineBreakInsère un saut de ligne à la position actuelle.
Méthode publiqueInsertParagraphBreakInsère un arrêt de paragraphe à la position actuelle.
Méthode publiqueInsertTextInRunInsère le texte spécifié dans le texte Run à la position actuelle.
Méthode publiqueIsInSameDocumentIndique si la position spécifiée est dans le même conteneur de texte que la position actuelle.
Méthode protégéeMemberwiseCloneCrée une copie superficielle de l'objet Object actuel. (Hérité de Object.)
Méthode publiqueToStringCe type ou membre prend en charge l'infrastructure Windows Presentation Foundation (WPF) et n'est pas conçu pour être utilisé directement à partir de votre code. (Substitue Object.ToString().)
Début

La classe TextPointer introduit la terminologie suivante :

  • Position fondamentale - un TextPointer pointe toujours sur une position dans le contenu. De telles positions tombent entre des caractères du contenu, ou entre des balises de flux d'élément du contenu définissant la structure du contenu.

  • Position actuelle – Comme un TextPointer indique toujours une position, et comme beaucoup des opérations pouvant être exécutées par un TextPointer sont relatives à la position sur laquelle pointe le TextPointer, il est logique d'appeler la position indiquée par un TextPointer la position actuelle.

  • Position d'insertion - Une position d'insertion est une position où du nouveau contenu peut être ajouté sans violer de règles sémantiques concernant le contenu associé. En pratique, une position d'insertion correspond à l'emplacement d'un signe insertion dans le contenu. Un exemple de position TextPointer valide, autre qu'une position d'insertion, est une position entre deux balises Paragraph adjacentes (c'est-à-dire, la balise de fermeture du paragraphe précédent et celle d'ouverture du suivant).

  • Symbole - Pour satisfaire les opérations TextPointer impliquant des symboles, chacun des éléments suivants est considéré comme un symbole :

    • Une balise d'ouverture ou de fermeture d'un élément TextElement.

    • Un élément UIElement contenu dans un InlineUIContainer ou BlockUIContainer. Notez qu'un UIElement de ce type compte toujours comme symbole unique ; tout contenu ou élément supplémentaire présent dans le UIElement ne compte pas comme symbole.

    • Chaque caractère Unicode 16 bits dans un élément Run texte.

  • Conteneur de texte - Un conteneur de texte est l'élément constituant l'ultime limite pour le flux du contenu traité ; la position indiquée par un TextPointer tombe toujours dans un conteneur de texte. Actuellement, un conteneur de texte doit être soit un FlowDocument soit un TextBlock. En général, les opérations entre instances TextPointer 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 méthode IsInSameDocument et les propriétés DocumentStart et DocumentEnd.

La classe TextPointer doit faciliter le parcours et les manipulations de contenu représenté par des éléments de flux Windows Presentation Foundation (WPF) ; en général, de tels éléments dérivent de TextElement. Parmi les opérations facilitées par TextPointer figurent les suivantes :

  • Effectuer une comparaison ordinale entre la position actuelle et une seconde position spécifiée. Voir la méthode CompareTo.

  • Déterminer le type de contenu adjacent à la position actuelle dans une direction spécifiée. Consultez la méthode GetPointerContext et énumération TextPointerContext.

  • Obtenir le TextElement portant sur ou adjacent à la position actuelle. Consultez Paragraph et la méthode GetAdjacentElement.

  • Obtenir le conteneur de texte portant sur le document actuel. Voir la propriété Parent.

  • Obtenir un nombre spécifié de caractères précédant ou suivant la position actuelle. Voir la méthode GetTextInRun.

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

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

  • Traduire entre des positions TextPointer et des offsets de symboles dans le contenu. Consultez les méthodes GetOffsetToPosition et GetPositionAtOffset.

  • Exécuter des tests de positionnement visuels en traduisant entre une position TextPointer et un Point représentant des coordonnées relatives.

  • Rechercher une position d'insertion proche, ou vérifier si la position actuelle est une position d'insertion. Consultez les méthodes GetInsertionPosition et GetNextInsertionPosition et la propriété IsAtInsertionPosition.

La position et LogicalDirection indiqués par un objet TextPointer sont immuables. Lorsque du contenu est édité ou modifié, la position indiquée par un TextPointer ne change pas par rapport au texte voisin, mais son offset dès le début du contenu reflète la nouvelle position relative dans le contenu. Par exemple, un TextPointer indiquant une position au début d'un paragraphe donné continue à pointer vers le début de ce paragraphe même lorsque du contenu est inséré ou supprimé avant ou après le paragraphe.

La classe TextPointer ne fournit pas de constructeurs publics. Une instance de TextPointer est créée en utilisant des propriétés ou méthodes d'autres objets (y compris d'autres objets TextPointer). La liste suivante fournit quelques exemples de méthodes et propriétés qui créent et renvoient un TextPointer. Cette liste n'est pas exhaustive :

L'exemple suivant montre comment utiliser un TextPointer pour rechercher une position dans le premier élément Run d'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;
} 


L'exemple suivant implémente un algorithme de recherche simple à l'aide de la logistique TextPointer.


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


.NET Framework

Pris en charge dans : 4.5, 4, 3.5, 3.0

.NET Framework Client Profile

Pris en charge dans : 4, 3.5 SP1

Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (rôle principal du serveur non pris en charge), Windows Server 2008 R2 (rôle principal du serveur pris en charge avec SP1 ou version ultérieure ; Itanium non pris en charge)

Le .NET Framework ne prend pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.
Tous les membres static (Shared en Visual Basic) publics de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.
Cela vous a-t-il été utile ?
(1500 caractères restants)

Ajouts de la communauté

AJOUTER
© 2013 Microsoft. Tous droits réservés.