Compartir a través de


Implementar el patrón de control Invoke de UI Automation

Nota

Esta documentación está dirigida a los desarrolladores de .NET Framework que quieran usar las clases de automatización de la interfaz de usuario administradas definidas en el espacio de nombres System.Windows.Automation. Para ver la información más reciente acerca de la automatización de la interfaz de usuario, consulte Windows Automation API: automatización de la interfaz de usuario.

En este tema se presentan las directrices y convenciones para implementar IInvokeProvider, incluida la información sobre eventos y propiedades. Al final del tema se ofrecen vínculos a referencias adicionales.

El patrón de control InvokePattern se utiliza para admitir controles que no mantienen el estado cuando se activan, sino que inician o realizan una única acción inequívoca. Los controles que mantienen el estado, como las casillas y los botones de radio, deben implementar en su lugar IToggleProvider y ISelectionItemProvider , respectivamente. Para obtener ejemplos de controles que implementan el patrón de control Invoke, vea Control Pattern Mapping for UI Automation Clients.

Directrices y convenciones de implementación

Al implementar el patrón de control Invoke, tenga en cuenta las siguientes directrices y convenciones:

  • Los controles implementan IInvokeProvider si el mismo comportamiento no se expone a través de otro proveedor de patrón de control. Por ejemplo, si el método Invoke de un control realiza la misma acción que los métodos Expand o Collapse , el control no debe implementar IInvokeProvider.

  • Generalmente, la invocación de un control se realiza con un clic, un doble clic, presionando la tecla ENTRAR, usando un método abreviado de teclado predefinido o alguna combinación alternativa de pulsaciones de teclas.

  • Se generaInvokedEvent en un control que se ha activado (como respuesta a un control que lleva a cabo su acción asociada). Si es posible, se debe generar el evento después de que el control haya completado la acción y haya hecho la devolución sin bloquearse. El evento Invoked debe generarse antes de atender la solicitud Invoke en los escenarios siguientes:

    • No es posible ni práctico esperar hasta que se complete la acción.

    • La acción requiere la interacción del usuario.

    • La acción requiere mucho tiempo y provocará que el cliente que llama se bloquee durante un tiempo considerable.

  • Si la invocación del control tiene efectos secundarios significativos, esos efectos secundarios se deben exponer a través de la propiedad HelpText . Por ejemplo, aunque Invoke no se asocie a la selección, Invoke puede provocar que se seleccione otro control.

  • Normalmente, los efectos de mantener el puntero (o pasar el mouse por encima) no constituyen un evento Invoked. Sin embargo, los controles que realizan una acción (en lugar de producir un efecto visual) según el estado del efecto de mantener el puntero deben admitir el patrón de control InvokePattern .

Nota

Esta implementación se considera un problema de accesibilidad si el control solo se puede invocar como resultado de un efecto secundario relacionado con el mouse.

  • La invocación de un control es diferente de la selección de un elemento. No obstante, dependiendo del control, su invocación puede provocar que el elemento se seleccione como un efecto secundario. Por ejemplo, la invocación de un elemento de lista de documentos de Microsoft Word en la carpeta Mis documentos selecciona el elemento y abre el documento.

  • Un elemento puede desaparecer del árbol de la automatización de la interfaz de usuario inmediatamente después de que se invoque. La solicitud de información del elemento que proporciona la devolución de llamada de evento puede producir un error como resultado. La solución recomendada es la captura previa de la información almacenada en caché.

  • Los controles pueden implementar varios patrones de control. Por ejemplo, el control Fill Color de la barra de herramientas de Microsoft Excel implementa los patrones de control InvokePattern y ExpandCollapsePattern. ExpandCollapsePattern expone el menú y el elemento InvokePattern rellena la selección activa con el color elegido.

Miembros requeridos para IInvokeProvider

Para implementar IInvokeProvider, se requieren las siguientes propiedades y métodos.

Miembros requeridos Tipo de miembro Notas
Invoke method Invoke es una llamada asincrónica y debe volver inmediatamente sin bloquearse.

Este comportamiento es especialmente importante para los controles que, directa o indirectamente, inician un cuadro de diálogo modal cuando se invocan. Cualquier cliente de Automatización de la interfaz de usuario que haya provocado que el evento permanezca bloqueado hasta que se cierre el cuadro de diálogo modal.

Excepciones

Los proveedores deben producir las siguientes excepciones.

Tipo de excepción Condición
ElementNotEnabledException Si el control no está habilitado.

Consulte también