Invocar padrão de controle
Descreve diretrizes e convenções para implementar IInvokeProvider , incluindo informações sobre métodos. O padrão de controle Invoke é usado para dar suporte a controles que não mantêm o estado quando ativados, mas iniciam ou executam uma única ação inequívoca.
Os controles que mantêm o estado, como caixas de seleção e botões de opção, devem, em vez disso, implementar IToggleProvider e ISelectionProvider, respectivamente. Para obter exemplos de controles que implementam esse padrão de controle, consulte tipos de controle e seus padrões de controle suportados.
Este tópico contém as seguintes seções.
- Diretrizes de Implementação e Convenções
- Membros necessários para IInvokeProvider
- Tópicos relacionados
Orientações e convenções de aplicação
Ao implementar o padrão de controle Invoke, observe as seguintes diretrizes e convenções:
Os controles implementam IInvokeProvider se o mesmo comportamento não for exposto por meio de outro provedor de padrão de controle. Por exemplo, se o IUIAutomationInvokePattern::Invoke método em um controle executa a mesma ação que o IUIAutomationExpandCollapsePattern::Expand ou método Collapse, o controle não deve implementar IInvokeProvider.
Invocar um controle geralmente é realizado clicando ou clicando duas vezes ou pressionando ENTER, um atalho de teclado predefinido ou alguma combinação alternativa de pressionamentos de teclas.
O evento Invoked (UIA_Invoke_InvokedEventId) é gerado em um controle que foi ativado (como resposta a um controle que executa sua ação associada). Se possível, o evento deve ser gerado após o controle ter concluído a ação e retornado sem bloqueio. O evento Invoked (UIA_Invoke_InvokedEventId) deve ser gerado antes de atender à solicitação Invoke nos seguintes cenários:
- Não é possível ou prático esperar até que a ação esteja concluída.
- A ação requer interação do usuário.
- A ação é demorada e fará com que o cliente chamador bloqueie por um período significativo de tempo.
Se invocar o controle tiver efeitos colaterais significativos, esses efeitos colaterais devem ser expostos por meio da propriedade HelpText. Por exemplo, mesmo que IUIAutomationInvokePattern::Invoke não esteja associado à seleção, Invoke pode fazer com que outro controle seja selecionado.
Os efeitos de focalização (ou passagem do mouse) geralmente não constituem um evento Invoked. No entanto, os controles que executam uma ação (em vez de causar um efeito visual) com base no estado de foco devem suportar o padrão de controle Invoke.
Observação
Essa implementação é considerada um problema de acessibilidade se o controle puder ser invocado apenas como resultado de um efeito colateral relacionado ao mouse.
Invocar um controle é diferente de selecionar um item. No entanto, dependendo do controle, invocá-lo pode fazer com que o item seja selecionado como um efeito colateral. Por exemplo, invocar um item de lista de documentos do Microsoft Word na pasta Meus Documentos seleciona o item e abre o documento.
Um elemento pode desaparecer da árvore de automação da interface do usuário da Microsoft imediatamente após ser invocado. A solicitação de informações do elemento fornecido pelo retorno de chamada do evento pode falhar como resultado. A pré-busca de informações armazenadas em cache é a solução recomendada.
Os controles podem implementar vários padrões de controle. Por exemplo, o controle Cor de Preenchimento na barra de ferramentas do Microsoft Excel implementa os padrões de controle Invoke e ExpandCollapse . O padrão de controle ExpandCollapse expõe o menu e o padrão de controle Invoke preenche a seleção ativa com a cor escolhida.
Membros necessários para IInvokeProvider
O método a seguir é necessário para implementar o IInvokeProvider interface.
Membros obrigatórios | Tipo de membro | Observações |
---|---|---|
Invoque | Método |
Invoke é uma chamada assíncrona e deve retornar imediatamente sem bloqueio. Esse comportamento é particularmente crítico para controles que, direta ou indiretamente, iniciam uma caixa de diálogo modal quando invocados. Qualquer cliente de automação da interface do usuário que instigou o evento permanecerá bloqueado até que a caixa de diálogo modal seja fechada. |
Esse padrão de controle não tem propriedades ou eventos associados.
Tópicos relacionados
-
Visão geral dos padrões de controle de automação da interface do do usuário