Partilhar via


Visão geral de TextPattern e objetos incorporados

Nota

Esta documentação destina-se a desenvolvedores do .NET Framework que desejam usar as classes de automação da interface do usuário gerenciadas definidas no System.Windows.Automation namespace. Para obter as informações mais recentes sobre a automação da interface do usuário, consulte API de automação do Windows: automação da interface do usuário.

Esta visão geral descreve como a Automação da Interface do Usuário da Microsoft expõe objetos incorporados, ou elementos filho, em um documento de texto ou contêiner.

Na Automação da Interface do Usuário, um objeto incorporado é qualquer elemento que tenha limites não textuais; por exemplo, uma imagem, hiperlink, tabela ou tipo de documento, como uma planilha do Microsoft Excel ou um arquivo do Microsoft Windows Media. Isso difere da definição padrão, onde um elemento é criado em um aplicativo e incorporado, ou vinculado, em outro. Se o objeto pode ser editado dentro de seu aplicativo original é irrelevante no contexto da automação da interface do usuário.

Objetos incorporados e a árvore de automação da interface do usuário

Os objetos incorporados são tratados como elementos individuais na visualização de controle da árvore de Automação da Interface do Usuário. Eles são expostos como filhos do contêiner de texto para que possam ser acessados pelo mesmo modelo que outros controles na Automação da Interface do Usuário.

Tabela incorporada com imagem em um contêiner de texto Exemplo de um contêiner de texto com objetos incorporados de tabela, imagem e hiperlink

Visualização de conteúdo para o exemplo anterior Exemplo da exibição de conteúdo para uma parte do contêiner de texto anterior

Expor objetos incorporados usando TextPattern e TextPatternRange

Usadas em conjunto, a classe de padrão de controle e a classe expõem métodos e propriedades que facilitam a TextPatternTextPatternRange navegação e a consulta de objetos incorporados.

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. Isso pode ser feito chamando GetChildren para obter um AutomationElement para cada objeto incorporado 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.

Intervalos de texto estendidos por objetos incorporados. Exemplo de um fluxo de texto com objetos incorporados e suas extensões de intervalo

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 ponto de extremidade, o Start que torna o End ponto de extremidade supérfluo. Esta etapa é necessária para remover a ambiguidade em situações em que um intervalo de TextUnit texto abrange limites: por exemplo, {The URL https://www.microsoft.com is embedded in text onde "{" e "}" são os pontos finais do intervalo de texto.

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

  3. O intervalo é movido para a frente ou para trás no DocumentRange pelo número solicitado de TextUnit limites.

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

Ajustes de intervalo por Move & ExpandToEnclosingUnit Exemplos de como um intervalo de texto é ajustado para Move() e ExpandToEnclosingUnit()

Cenários Comuns

As seções a seguir apresentam exemplos dos cenários mais comuns que envolvem objetos incorporados.

Legenda para os exemplos mostrados:

{ = Start

} = End

Exemplo 1 - Um intervalo de texto que contém um hiperlink de texto incorporado

{The URL https://www.microsoft.com is embedded in text}.

Método denominado Result
GetText Retorna a cadeia de caracteres The URL https://www.microsoft.com is embedded in text.
GetEnclosingElement Retorna o mais AutomationElement interno que encerra o intervalo de texto, neste caso, o AutomationElement que representa o próprio provedor de texto.
GetChildren Retorna um AutomationElement representando o controle de hiperlink.
RangeFromChild onde AutomationElement é o objeto retornado pelo método anterior GetChildren . Retorna o intervalo que representa https://www.microsoft.como .

Exemplo 2 - Um intervalo de texto que abrange parcialmente um hiperlink de texto incorporado

O URL https://{[www]} é incorporado no texto.

Método denominado Result
GetText Retorna a cadeia de caracteres "www".
GetEnclosingElement Retorna o mais AutomationElement interno que encerra o intervalo de texto, neste caso, o controle de hiperlink.
GetChildren Retorna null porque o intervalo de texto não abrange toda a cadeia de caracteres de URL.

Exemplo 3 - Um intervalo de texto que abrange parcialmente o conteúdo de um contêiner de texto. O contêiner de texto tem um hiperlink de texto incorporado que não faz parte do intervalo de texto.

{The URL} [https://www.microsoft.com](https://www.microsoft.com) is embedded in text.

Método denominado Result
GetText Retorna a cadeia de caracteres "The URL".
GetEnclosingElement Retorna o mais AutomationElement interno que encerra o intervalo de texto, neste caso, o AutomationElement que representa o próprio provedor de texto.
Move com parâmetros de (TextUnit.Word, 1). Move a extensão do intervalo de texto para "http", uma vez que o texto do hiperlink é composto por palavras individuais. Nesse caso, o hiperlink não é tratado como um único objeto.

O URL {[http]} está incorporado no texto.

Image

Exemplo 1 - Um intervalo de texto que contém uma imagem incorporada

{A imagem Exemplo de imagem incorporada está incorporado no texto}.

Método denominado Result
GetText Retorna a cadeia de caracteres "O está incorporado no texto". Não se pode esperar que qualquer texto ALT associado à imagem seja incluído no fluxo de texto.
GetEnclosingElement Retorna o mais AutomationElement interno que encerra o intervalo de texto, neste caso, o AutomationElement que representa o próprio provedor de texto.
GetChildren Retorna um AutomationElement representando o controle de imagem.
RangeFromChild onde AutomationElement é o objeto retornado pelo método anterior GetChildren . Retorna o intervalo degenerado que representa "Exemplo de imagem incorporada".

Exemplo 2 - Um intervalo de texto que abrange parcialmente o conteúdo de um contêiner de texto. O contêiner de texto tem uma imagem incorporada que não faz parte do intervalo de texto.

{A imagem} Exemplo de imagem incorporada está incorporado no texto.

Método denominado Result
GetText Retorna a cadeia de caracteres "A imagem".
GetEnclosingElement Retorna o mais AutomationElement interno que encerra o intervalo de texto, neste caso, o AutomationElement que representa o próprio provedor de texto.
Move com parâmetros de (TextUnit.Word, 1). Move a extensão do intervalo de texto para "is ". Como apenas objetos incorporados baseados em texto são considerados parte do fluxo de texto, a imagem neste exemplo não afeta Move ou seu valor de retorno (1 neste caso).

Tabela

Tabela usada para exemplos

Célula com Imagem Célula com texto
Exemplo de imagem incorporada X
Exemplo de imagem incorporada 2 Y
Exemplo de imagem incorporada 3

Imagem para Z
Z

Exemplo 1 - Obter o recipiente de texto do conteúdo de uma célula.

Método chamado Result
GetItem com parâmetros (0,0) Retorna a AutomationElement representação do conteúdo da célula da tabela, neste caso, o elemento é um controle de texto.
RangeFromChild onde AutomationElement é o objeto retornado pelo método anterior GetItem . Retorna o intervalo que abrange a imagem Exemplo de imagem incorporada.
GetEnclosingElement para o objeto retornado pelo método anterior RangeFromChild . Retorna o AutomationElement que representa a célula da tabela, neste caso, o elemento é um controle de texto que suporta TableItemPattern.
GetEnclosingElement para o objeto retornado pelo método anterior GetEnclosingElement . Retorna o AutomationElement que representa a tabela.
GetEnclosingElement para o objeto retornado pelo método anterior GetEnclosingElement . Retorna o AutomationElement que representa o próprio provedor de texto.

Exemplo 2 - Obter o conteúdo de texto de uma célula.

Método chamado Result
GetItem com parâmetros de (1,1). Retorna a AutomationElement representação do conteúdo da célula da tabela, neste caso, o elemento é um controle de texto.
RangeFromChild onde AutomationElement é o objeto retornado pelo método anterior GetItem . Devolve "Y".

Consulte também