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.
Exemplo de um contêiner de texto com objetos incorporados de tabela, imagem e hiperlink
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.
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.
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.O intervalo resultante é movido para trás no DocumentRange início do limite solicitado TextUnit .
O intervalo é movido para a frente ou para trás no DocumentRange pelo número solicitado de TextUnit limites.
O intervalo é então expandido a partir de um estado de intervalo degenerado movendo o End ponto de extremidade por um limite solicitado TextUnit .
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
Hiperligação
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.com o . |
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 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 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} 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 |
---|---|
X | |
Y | |
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 . |
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
- TextPattern
- TextPatternRange
- ITextProvider
- ITextRangeProvider
- Acessar objetos incorporados usando a automação da interface do usuário
- Expor o conteúdo de uma tabela usando a automação da interface do usuário
- Atravessar texto usando a automação da interface do usuário
- Exemplo de pesquisa e seleção TextPattern