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 conforme 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 de extremidade a ser movido.
- unit
- TextUnit
A unidade textual para mover.
- count
- Int32
O número de unidades a serem movidas. Uma contagem positiva move o ponto de extremidade para frente. Uma contagem negativa move para trás. Uma contagem de 0 não tem nenhum efeito.
Retornos
O número de unidades realmente movidos, que pode ser menor que o número solicitado se mover que o ponto de extremidade é 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 método Move seja executado com êxito.
O intervalo de texto é normalizado; ou seja, ele é recolhido a um intervalo degenerado no ponto de extremidade Start, o que torna 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
unit
limites; 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 para o início do limite
unit
solicitado.Em seguida, o intervalo é expandido de um estado de intervalo degenerado movendo o ponto de extremidade End um limite
unit
solicitado.
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 só fluxo de texto 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 de objeto são ignorados. Se um cliente da Automação da Interface do Usuário estiver recuperando o texto com a finalidade de recitar, interpretar ou analisá-lo de alguma forma, o intervalo de texto deverá ser verificado para 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 seja recuperado.
Exemplo de um fluxo de texto com objetos inseridos e seus intervalos
MoveEndpointByUnit adiará para o próximo maior TextUnit com suporte se o determinado TextUnit não tiver suporte do controle .
A ordem, da menor unidade para a maior, está listada abaixo.