TextPatternRange.MoveEndpointByUnit Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Move um ponto de extremidade do intervalo de texto o número especificado de TextUnits dentro do intervalo de documentos.
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 de extremidade a ser movido.
- unit
- TextUnit
A unidade textual para movimentação.
- count
- Int32
O número de unidades pelo qual mover. Uma contagem positiva move o ponto de extremidade para frente. Uma contagem negativa se move para trás. Uma contagem de 0 não tem efeito.
Retornos
O número de unidades realmente movidas, que pode ser menor do que o número solicitado se mover o ponto de extremidade for executado no início ou no final 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
Comentários
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 êxito.
O intervalo de texto é normalizado, ou seja, ele é recolhido a um intervalo degenerado no ponto de extremidade Start, tornando o ponto de extremidade End supérfluo. Esta etapa é necessária para remover a ambiguidade em situações em que um intervalo de texto abrange
unitlimites; por exemplo, "{A U}RL https://www.microsoft.com/ está inserida no texto" em que "{" e "}" são os pontos de extremidade do intervalo de texto.O intervalo resultante é movido para trás no DocumentRange até o início do limite solicitado
unit.Em seguida, o intervalo é expandido de um estado de intervalo degenerado movendo o ponto de extremidade End um limite
unitsolicitado.
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 inserido, como um hiperlink ou célula de tabela, é exposto como um único fluxo de texto contínuo no modo de exibição de controle e na exibição de conteúdo da árvore de Automação da Interface do Usuário; os limites de objeto são ignorados. Se um cliente de Automação de Interface do Usuário estiver recuperando o texto com a finalidade de recitar, interpretar ou analisar de alguma forma, o intervalo de texto deverá ser verificado quanto a casos especiais, como uma tabela com conteúdo textual ou outros objetos inseridos. Isso pode ser feito chamando GetChildren para obter um AutomationElement para cada objeto inserido e, em seguida, chamando RangeFromChild para obter um intervalo de texto para cada elemento; isso é feito recursivamente até que todo o conteúdo textual tenha sido recuperado.
MoveEndpointByUnit adiará para o próximo maior TextUnit com suporte se o determinado TextUnit não tiver suporte no controle.
A ordem, da menor unidade para a maior, está listada abaixo.