TextPointer TextPointer TextPointer TextPointer Class

Definición

Representa una posición dentro de un 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
Herencia

Ejemplos

En el ejemplo siguiente se muestra cómo usar un TextPointer para buscar una posición justo dentro de la primera Run elemento en un contenedor de texto especificado.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

El ejemplo siguiente implementa un algoritmo de búsqueda sencillo utilizando TextPointer instalaciones.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

Comentarios

La TextPointer clase presenta la terminología siguiente:The TextPointer class introduces the following terminology:

  • -Inherentemente, coloque un TextPointer siempre apunta a un posición en contenido.Position - Inherently, a TextPointer always points to a position in content. Estas posiciones se encuentran entre caracteres en el contenido, o entre el flujo de contenido de etiquetas de los elementos que definen la estructura del contenido.Such positions either fall between characters in the content, or between flow content element tags that define structure for the content.

  • La posición actual - ya un TextPointer siempre indica una posición y porque muchas de las operaciones que pueden realizarse a través de un TextPointer son relativas a la posición que apunta actualmente el TextPointer, tiene sentido simplemente hacer referencia a la posición indicada por una TextPointer como el posición actual.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.

  • Posición de inserción: una posición de inserción es una posición donde se puede agregar contenido nuevo sin romper ninguna regla semántica para el contenido asociado.Insertion Position - An insertion position is a position where new content may be added without breaking any semantic rules for the associated content. En la práctica, una posición de inserción está en cualquier lugar en donde se puede colocar un símbolo de intercalación de contenido.In practice, an insertion position is anywhere in content where a caret may be positioned. Un ejemplo de válido TextPointer posición que no es una posición de inserción es la posición entre dos adyacentes Paragraph etiquetas (es decir, entre la etiqueta de cierre del párrafo anterior y la etiqueta de apertura del párrafo siguiente).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).

  • Símbolos - para los fines de TextPointer las operaciones que implican los símbolos, cualquiera de las siguientes opciones se considera un símbolo:Symbol - For the purposes of TextPointer operations that involve symbols, any of the following is considered to be a symbol:

    • Una etiqueta inicial o final para un TextElement elemento.An opening or closing tag for a TextElement element.

    • Un UIElement elemento dentro de un InlineUIContainer o BlockUIContainer.A UIElement element contained within an InlineUIContainer or BlockUIContainer. Tenga en cuenta que tales un UIElement siempre se cuentan como exactamente un símbolo; cualquier contenido adicional o elementos que forman parte del UIElement no se cuentan como símbolos.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.

    • Cada uno de ellos de 16 bits UnicodeUnicode carácter dentro de un texto Run elemento.Each 16-bit UnicodeUnicode character inside of a text Run element.

  • Contenedor de texto - A contenedor de texto es el elemento que constituye el borde final para el contenido dinámico en cuestión; la posición indicada por una TextPointer siempre se encuentra dentro de un contenedor de texto.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. Actualmente, un contenedor de texto debe ser un FlowDocument o TextBlock.Currently, a text container must be either a FlowDocument or a TextBlock. En general, las operaciones entre TextPointer no se admiten las instancias de los contenedores de texto diferente.Generally speaking, operations between TextPointer instances in different text containers are not supported.

  • Documento: el contenido de un contenedor de texto se conoce como un documento, como en el IsInSameDocument método y el DocumentStart y DocumentEnd propiedades.Document - The content in a text container is referred to as a document, as in the IsInSameDocument method and the DocumentStart and DocumentEnd properties.

El TextPointer clase está diseñada para facilitar la exploración transversal y manipulación de contenido que se representa mediante Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) elementos de contenido dinámico; en general, estos elementos se derivan de 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. Algunas de las operaciones que TextPointer facilita incluyen lo siguiente:Some of the operations that TextPointer facilitates include the following:

La posición y LogicalDirection indicado por un TextPointer objeto son inmutables.The position and LogicalDirection indicated by a TextPointer object are immutable. Cuando contenido editado o modificado, la posición indicada por una TextPointer no cambia en relación con el texto adyacente; en su lugar el desplazamiento de esa posición desde el principio del contenido se ajusta proporcionalmente para reflejar la nueva posición relativa en contenido.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. Por ejemplo, un TextPointer que indica una posición al principio de un párrafo dado continúa apuntando al principio del párrafo, incluso cuando el contenido se inserta o elimina antes o después del párrafo.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 clase no proporciona ningún constructor público.The TextPointer class does not provide any public constructors. Una instancia de TextPointer se crea mediante el uso de las propiedades o métodos de otros objetos (incluidos otros TextPointer objetos).An instance of TextPointer is created by using properties or methods of other objects (including other TextPointer objects). En la lista siguiente proporciona algunos ejemplos de métodos y propiedades que creación y devuelven un TextPointer.The following list provides a few examples of methods and properties that create and return a TextPointer. Esta lista no es exhaustiva:This list is not exhaustive:

Propiedades

DocumentEnd DocumentEnd DocumentEnd DocumentEnd

Obtiene TextPointer al final del contenido en el contenedor de texto asociado a la posición actual.Gets a TextPointer at the end of content in the text container associated with the current position.

DocumentStart DocumentStart DocumentStart DocumentStart

Obtiene TextPointer al principio del contenido en el contenedor de texto asociado a la posición actual.Gets a TextPointer at the beginning of content in the text container associated with the current position.

HasValidLayout HasValidLayout HasValidLayout HasValidLayout

Obtiene un valor que indica si el contenedor de texto asociado a la posición actual tiene un diseño válido (actualizado).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

Obtiene un valor que indica si la posición actual es una posición de inserción.Gets a value that indicates whether the current position is an insertion position.

IsAtLineStartPosition IsAtLineStartPosition IsAtLineStartPosition IsAtLineStartPosition

Obtiene un valor que indica si la posición actual está al principio de una línea.Gets a value that indicates whether the current position is at the beginning of a line.

LogicalDirection LogicalDirection LogicalDirection LogicalDirection

Obtiene la dirección lógica asociada a la posición actual que se utiliza para eliminar la ambigüedad del contenido asociado a la posición actual.Gets the logical direction associated with the current position which is used to disambiguate content associated with the current position.

Paragraph Paragraph Paragraph Paragraph

Obtiene el párrafo que establece el ámbito de la posición actual, si lo hay.Gets the paragraph that scopes the current position, if any.

Parent Parent Parent Parent

Obtiene el elemento primario lógico que establece el ámbito de la posición actual.Gets the logical parent that scopes the current position.

Métodos

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

Realiza una comparación de ordinales entre las posiciones especificadas por el TextPointer actual y un segundo TextPointer especificado.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 el número de caracteres especificado de la posición indicada por el TextPointer actual.Deletes the specified number of characters from the position indicated by the current TextPointer.

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

Determina si el objeto especificado es igual al objeto actual.Determines whether the specified object is equal to the current object.

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

Devuelve el elemento, en caso de que exista, que limita al TextPointer actual en la dirección lógica especificada.Returns the element, if any, that borders the current TextPointer in the specified logical direction.

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

Devuelve un rectángulo de selección (Rect) para el contenido que limita el TextPointer actual en la dirección lógica especificada.Returns a bounding box (Rect) for content that borders the current TextPointer in the specified logical direction.

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

Sirve como la función hash predeterminada.Serves as the default hash function.

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

Devuelve TextPointer a la posición de inserción más cercana en la dirección lógica especificada.Returns a TextPointer to the closest insertion position in the specified logical direction.

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

Devuelve TextPointer al principio de una línea que se especifica con respecto al TextPointer actual.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)

Devuelve TextPointer al principio de una línea que se especifica con respecto al TextPointer actual e informa sobre el número de líneas omitidas.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)

Devuelve un puntero al símbolo siguiente en la dirección lógica especificada.Returns a pointer to the next symbol in the specified logical direction.

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

Devuelve TextPointer a la posición de inserción siguiente en la dirección lógica especificada.Returns a TextPointer to the next insertion position in the specified logical direction.

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

Devuelve el recuento de símbolos entre el TextPointer actual y un segundo TextPointer especificado.Returns the count of symbols between the current TextPointer and a second specified TextPointer.

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

Devuelve un indicador de categoría para el contenido adyacente al TextPointer actual en la dirección lógica especificada.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)

Devuelve TextPointer a la posición indicada por el desplazamiento especificado, en símbolos, a partir del principio del TextPointer actual.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)

Devuelve TextPointer a la posición indicada por el desplazamiento especificado, en símbolos, a partir del principio del TextPointer actual y en la dirección especificada.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)

Devuelve una cadena que contiene cualquier texto adyacente al TextPointer actual en la dirección lógica especificada.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 el número de caracteres máximo especificado desde cualquier texto adyacente en la dirección especificada en una matriz de caracteres proporcionada por un llamador.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)

Devuelve el número de caracteres Unicode entre el TextPointer actual y el símbolo de no texto siguiente, en la dirección lógica especificada.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()

Obtiene el Type de la instancia actual.Gets the Type of the current instance.

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

Inserta un salto de línea en la posición actual.Inserts a line break at the current position.

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

Inserta un salto de párrafo en la posición actual.Inserts a paragraph break at the current position.

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

Inserta el texto especificado en el Run del texto en la posición actual.Inserts the specified text into the text Run at the current position.

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

Indica si la posición especificada está en el mismo contenedor de texto que la posición actual.Indicates whether the specified position is in the same text container as the current position.

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

Crea una copia superficial del objeto Object actual.Creates a shallow copy of the current Object.

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

Este tipo o miembro es compatible con la infraestructura Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) y no está pensado para ser usado directamente desde su código.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.

Se aplica a

Consulte también: