TextPatternRange.MoveEndpointByUnit Método

Definição

Move uma extremidade do intervalo de texto para o número especificado de TextUnits dentro do intervalo do documento.

public:
 int MoveEndpointByUnit(System::Windows::Automation::Text::TextPatternRangeEndpoint endpoint, System::Windows::Automation::Text::TextUnit unit, int count);
public int MoveEndpointByUnit(System.Windows.Automation.Text.TextPatternRangeEndpoint endpoint, System.Windows.Automation.Text.TextUnit unit, int count);
member this.MoveEndpointByUnit : System.Windows.Automation.Text.TextPatternRangeEndpoint * System.Windows.Automation.Text.TextUnit * int -> int
Public Function MoveEndpointByUnit (endpoint As TextPatternRangeEndpoint, unit As TextUnit, count As Integer) As Integer

Parâmetros

endpoint
TextPatternRangeEndpoint

O ponto final para avançar.

unit
TextUnit

A unidade textual para a mudança.

count
Int32

O número de unidades a mover. Uma contagem positiva faz o endpoint avançar. Uma contagem negativa recua. Uma contagem de 0 não tem efeito.

Devoluções

O número de unidades efetivamente movimentadas, que pode ser inferior ao número solicitado se mover o endpoint entrar no início ou no fim do documento.

Exemplos

private Int32 MoveEndpointByRangeFromSelection(AutomationElement target, Int32 units)
{
    // Specify the control type we're looking for, in this case 'Document'
    PropertyCondition cond = new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Document);

    // target --> The root AutomationElement.
    AutomationElement textProvider = target.FindFirst(TreeScope.Descendants, cond);

    TextPattern textpatternPattern = textProvider.GetCurrentPattern(TextPattern.Pattern) as TextPattern;

    if (textpatternPattern == null)
    {
        Console.WriteLine("Root element does not contain a descendant that supports TextPattern.");
        return 0;
    }
    TextPatternRange[] currentSelection = textpatternPattern.GetSelection();

    return currentSelection[0].MoveEndpointByUnit(
        TextPatternRangeEndpoint.Start, TextUnit.Paragraph, units);
}
Private Function MoveEndpointByRangeFromSelection(ByVal target As AutomationElement, ByVal units As Int32) As Int32
    ' Specify the control type we're looking for, in this case 'Document'
    Dim cond As PropertyCondition = New PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Document)

    ' target --> The root AutomationElement.
    Dim textProvider As AutomationElement = target.FindFirst(TreeScope.Descendants, cond)

    Dim textpatternPattern As TextPattern = CType(textProvider.GetCurrentPattern(TextPattern.Pattern), TextPattern)

    If (textpatternPattern Is Nothing) Then
        Console.WriteLine("Root element does not contain a descendant that supports TextPattern.")
        Return Nothing
    End If
    Dim currentSelection As TextPatternRange() = textpatternPattern.GetSelection()
    ' GetText(-1) retrieves all characters but can be inefficient
    Return currentSelection(0).MoveEndpointByUnit(TextPatternRangeEndpoint.Start, TextUnit.Paragraph, units)
End Function

Observações

Quando é necessário percorrer o conteúdo de um intervalo de texto, uma série de etapas são envolvidas nos bastidores para que o Move método seja executado com sucesso.

  1. O intervalo de texto é normalizado; ou seja, o intervalo de texto é recolhido para um intervalo degenerado no Start ponto de extremidade, o que torna o End ponto de extremidade supérfluo. Este passo é necessário para remover ambiguidade em situações em que um intervalo de texto atravessa unit fronteiras; por exemplo, "{O U}RL https://www.microsoft.com/ está incorporado no texto" onde "{" e "}" são os extremos do intervalo de texto.

  2. O intervalo resultante é movido para trás no DocumentRange até o início do limite solicitado unit.

  3. O intervalo é então expandido a partir de um estado degenerado de intervalo, movendo o ponto de extremidade End por um limite unit solicitado.

Ajustes de alcance por Mover & Expandir ParaAjustamentos de Alcance da Unidade Exemplos de como um intervalo de texto é ajustado para Move() e ExpandToEnclosingUnit()

O conteúdo textual (ou texto interno) de um contêiner de texto e um objeto incorporado, como um hiperlink ou célula de tabela, é exposto como um fluxo de texto único e contínuo na exibição de controle e na exibição de conteúdo da árvore de Automação da Interface do Usuário; Os limites do objeto são ignorados. Se um cliente de automação da interface do usuário estiver recuperando o texto com a finalidade de recitar, interpretar ou analisar de alguma maneira, o intervalo de texto deve ser verificado para casos especiais, como uma tabela com conteúdo textual ou outros objetos incorporados. Isto pode ser conseguido chamando GetChildren para obter um AutomationElement para cada objeto embutido e depois chamando RangeFromChild para obter um intervalo de texto para cada elemento; isto é feito recursivamente até que todo o conteúdo textual tenha sido recuperado.

Intervalos de texto abrangidos por objetos embutidos. Exemplo de um fluxo de texto com objetos embutidos e os seus abrangências de alcance

MoveEndpointByUnit adia para o próximo maior TextUnit suporte se o dado TextUnit não for suportado pelo controlo.

A ordem, da menor para a maior, está listada abaixo.

Aplica-se a