TextPointer TextPointer TextPointer TextPointer Class

Definizione

Rappresenta una posizione all'interno di un oggetto FlowDocument o 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
Ereditarietà

Esempi

Nell'esempio seguente viene illustrato come utilizzare un TextPointer per cercare una posizione all'interno del primo Run elemento in un contenitore di testo specificato.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'esempio seguente implementa un algoritmo di ricerca semplicistico usando TextPointer strutture.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

Commenti

Il TextPointer classe introduce la terminologia seguente:The TextPointer class introduces the following terminology:

  • Posizione - per definizione, un TextPointer fa sempre riferimento a un posizione nel contenuto.Position - Inherently, a TextPointer always points to a position in content. Le posizioni si trovano tra i caratteri nel contenuto o tra flusso di contenuto elemento tag che definiscono la struttura del contenuto.Such positions either fall between characters in the content, or between flow content element tags that define structure for the content.

  • Posizione corrente - poiché una TextPointer sempre indica una posizione e poiché molte delle operazioni che possono essere eseguite tramite un TextPointer riguardano la posizione a cui puntata il TextPointer, è opportuno fare riferimento al posizione indicata da una TextPointer come il posizione corrente.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.

  • Posizione di inserimento - un' posizione di inserimento è una posizione in cui possono essere aggiunti nuovi contenuti senza interrompere tutte le regole semantiche per il contenuto associato.Insertion Position - An insertion position is a position where new content may be added without breaking any semantic rules for the associated content. In pratica, una posizione di inserimento è in un punto qualsiasi nel contenuto in cui non può essere posizionato un punto di inserimento.In practice, an insertion position is anywhere in content where a caret may be positioned. Un esempio di un oggetto valido TextPointer che non è una posizione di inserimento si trova la posizione tra due adiacenti Paragraph tag (vale a dire, tra il tag di chiusura del precedente paragrafo e il tag di apertura del paragrafo successivo).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).

  • Simbolo - per quanto riguarda TextPointer operazioni che coinvolgono i simboli, uno dei seguenti viene considerato un simbolo:Symbol - For the purposes of TextPointer operations that involve symbols, any of the following is considered to be a symbol:

    • Tag di apertura o chiusura di un TextElement elemento.An opening or closing tag for a TextElement element.

    • Oggetto UIElement elemento contenuto all'interno di un' InlineUIContainer o BlockUIContainer.A UIElement element contained within an InlineUIContainer or BlockUIContainer. Si noti che tali una UIElement viene sempre conteggiato come un solo simbolo; qualsiasi contenuto aggiuntivo o gli elementi contenuti dal UIElement non vengono conteggiati come simboli.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.

    • Ogni 16 bit UnicodeUnicode carattere all'interno di un testo Run elemento.Each 16-bit UnicodeUnicode character inside of a text Run element.

  • Contenitore di testo - A contenitore di testo è l'elemento che costituisce il bordo finale per il contenuto del flusso in questione; nella posizione indicata da un TextPointer sempre rientra in un contenitore di testo.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. Attualmente, un contenitore di testo deve essere un FlowDocument o un TextBlock.Currently, a text container must be either a FlowDocument or a TextBlock. In generale, le operazioni tra TextPointer istanze nei contenitori di testo diversi non sono supportate.Generally speaking, operations between TextPointer instances in different text containers are not supported.

  • Documento - il contenuto in un contenitore di testo viene definito un documento, come nel IsInSameDocument metodo e il DocumentStart e DocumentEnd proprietà.Document - The content in a text container is referred to as a document, as in the IsInSameDocument method and the DocumentStart and DocumentEnd properties.

Il TextPointer classe è destinata a facilitare l'attraversamento e manipolazione di contenuto rappresentato da Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) elementi di contenuto del flusso; in genere, tali elementi derivano da 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. Alcune delle operazioni che TextPointer facilita includono quanto segue:Some of the operations that TextPointer facilitates include the following:

La posizione e LogicalDirection indicata da un TextPointer oggetto non sono modificabili.The position and LogicalDirection indicated by a TextPointer object are immutable. Quando il contenuto viene modificato, nella posizione indicata da un TextPointer rimane invariato rispetto al testo circostante; piuttosto l'offset di tale posizione dall'inizio del contenuto viene regolato di conseguenza in modo da riflettere la nuova posizione relativa nella contenuto.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. Ad esempio, un TextPointer che indica una posizione all'inizio di un determinato paragrafo continua in modo che punti all'inizio del paragrafo, anche quando il contenuto viene inserito o eliminato prima o dopo il paragrafo.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.

Il TextPointer classe non fornisce alcun costruttore pubblici.The TextPointer class does not provide any public constructors. Un'istanza di TextPointer viene creato usando i metodi o proprietà di altri oggetti (inclusi altri TextPointer oggetti).An instance of TextPointer is created by using properties or methods of other objects (including other TextPointer objects). Nell'elenco seguente offre alcuni esempi di metodi e proprietà che crea e restituisce un TextPointer.The following list provides a few examples of methods and properties that create and return a TextPointer. Questo elenco non è completo:This list is not exhaustive:

Proprietà

DocumentEnd DocumentEnd DocumentEnd DocumentEnd

Ottiene un oggetto TextPointer alla fine del contenuto nel contenitore di testo associato alla posizione corrente.Gets a TextPointer at the end of content in the text container associated with the current position.

DocumentStart DocumentStart DocumentStart DocumentStart

Ottiene un oggetto TextPointer all'inizio del contenuto nel contenitore di testo associato alla posizione corrente.Gets a TextPointer at the beginning of content in the text container associated with the current position.

HasValidLayout HasValidLayout HasValidLayout HasValidLayout

Ottiene un valore che indica se il contenitore di testo associato alla posizione corrente ha un layout valido (aggiornato).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

Ottiene un valore che indica se la posizione corrente è una posizione di inserimento.Gets a value that indicates whether the current position is an insertion position.

IsAtLineStartPosition IsAtLineStartPosition IsAtLineStartPosition IsAtLineStartPosition

Ottiene un valore che indica se la posizione corrente è all'inizio di una riga.Gets a value that indicates whether the current position is at the beginning of a line.

LogicalDirection LogicalDirection LogicalDirection LogicalDirection

Ottiene la direzione logica associata alla posizione corrente e utilizzata per risolvere le ambiguità del contenuto associato alla posizione corrente.Gets the logical direction associated with the current position which is used to disambiguate content associated with the current position.

Paragraph Paragraph Paragraph Paragraph

Ottiene il paragrafo che fornisce l'ambito alla posizione corrente, se presente.Gets the paragraph that scopes the current position, if any.

Parent Parent Parent Parent

Ottiene il padre logico che fornisce l'ambito alla posizione corrente.Gets the logical parent that scopes the current position.

Metodi

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

Esegue un confronto ordinale tra le posizioni specificate dall'oggetto TextPointer corrente e un secondo oggetto TextPointer specificato.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)

Elimina il numero di caratteri specificato dalla posizione indicata dall'oggetto TextPointer corrente.Deletes the specified number of characters from the position indicated by the current TextPointer.

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

Determina se l'oggetto specificato è uguale all'oggetto corrente.Determines whether the specified object is equal to the current object.

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

Restituisce l'elemento, se presente, che delimita l'oggetto TextPointer corrente nella direzione logica specificata.Returns the element, if any, that borders the current TextPointer in the specified logical direction.

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

Restituisce un riquadro delimitatore del testo (Rect) per il contenuto che delimita l'oggetto TextPointer corrente nella direzione logica specificata.Returns a bounding box (Rect) for content that borders the current TextPointer in the specified logical direction.

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

Funge da funzione hash predefinita.Serves as the default hash function.

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

Restituisce un oggetto TextPointer nella posizione di inserimento più vicina, nella direzione logica specificata.Returns a TextPointer to the closest insertion position in the specified logical direction.

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

Restituisce un oggetto TextPointer all'inizio di una riga specificata in relazione all'oggetto TextPointer corrente.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)

Restituisce un oggetto TextPointer all'inizio di una riga specificata in relazione all'oggetto TextPointer corrente e segnala quante righe sono state ignorate.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)

Restituisce un puntatore al simbolo successivo nella direzione logica specificata.Returns a pointer to the next symbol in the specified logical direction.

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

Restituisce un oggetto TextPointer nella posizione di inserimento successiva nella direzione logica specificata.Returns a TextPointer to the next insertion position in the specified logical direction.

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

Restituisce il conteggio dei simboli tra l'oggetto TextPointer corrente e un secondo oggetto TextPointer specificato.Returns the count of symbols between the current TextPointer and a second specified TextPointer.

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

Restituisce un indicatore di categoria per il contenuto adiacente all'oggetto TextPointer corrente nella direzione logica specificata.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)

Restituisce un oggetto TextPointer nella posizione indicata dall'offset specificato, in simboli, dall'inizio dell'oggetto TextPointer corrente.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)

Restituisce un oggetto TextPointer nella posizione indicata dall'offset specificato, in simboli, dall'inizio dell'oggetto TextPointer corrente e nella direzione specificata.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)

Restituisce una stringa contenente il testo adiacente all'oggetto TextPointer corrente nella direzione logica specificata.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)

Copia il numero di caratteri massimo specificato da un testo adiacente nella direzione specificata in una matrice di caratteri fornita dal chiamante.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)

Restituisce il numero di caratteri Unicode tra l'oggetto TextPointer corrente e il simbolo non testuale successivo, nella direzione logica specificata.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()

Ottiene l'oggetto Type dell'istanza corrente.Gets the Type of the current instance.

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

Inserisce un'interruzione di riga nella posizione corrente.Inserts a line break at the current position.

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

Inserisce un'interruzione di paragrafo nella posizione corrente.Inserts a paragraph break at the current position.

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

Inserisce il testo specificato nell'elemento Run del testo nella posizione corrente.Inserts the specified text into the text Run at the current position.

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

Indica se la posizione specificata si trova nello stesso contenitore di testo della posizione corrente.Indicates whether the specified position is in the same text container as the current position.

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

Crea una copia superficiale dell'oggetto Object corrente.Creates a shallow copy of the current Object.

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

Questo tipo o membro supporta l'infrastruttura Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) e non deve essere usato direttamente dal codice.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.

Si applica a

Vedi anche