Invocar patrón de control
Describe las directrices y convenciones para implementar IInvokeProvider, incluida la información sobre los métodos. El patrón de control Invoke se usa 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 casillas y botones de radio, deben implementar IToggleProvider e ISelectionProvider respectivamente. Para obtener ejemplos de controles que implementan este patrón de control, vea Tipos de control y Sus patrones de control admitidos.
En este tema se incluyen las siguientes secciones.
- Directrices y convenciones de implementación
- Miembros necesarios para IInvokeProvider
- Temas relacionados
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 patrones de control. Por ejemplo, si el método IUIAutomationInvokePattern::Invoke en un control realiza la misma acción que el método IUIAutomationExpandCollapsePattern::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.
El evento Invoked (UIA_Invoke_InvokedEventId) se genera 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 (UIA_Invoke_InvokedEventId) 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 invocar el control tiene efectos secundarios significativos, esos efectos secundarios deben exponerse a través de la propiedad HelpText . Por ejemplo, aunque IUIAutomationInvokePattern::Invoke no esté asociado a la selección, Invoke puede hacer que se seleccione otro control.
Los efectos de mantener el puntero (o pasar el mouse) por lo general no constituyen un evento Invocado . Sin embargo, los controles que realizan una acción (en lugar de provocar un efecto visual) en función del estado de desplazamiento deben admitir el patrón de control Invoke .
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 Microsoft Automatización de la interfaz de usuario inmediatamente después de invocarse. 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 Color de relleno de la barra de herramientas de Microsoft Excel implementa los patrones de control Invoke y ExpandCollapse . El patrón de control ExpandCollapse expone el menú y el patrón de control Invocar rellena la selección activa con el color elegido.
Miembros necesarios para IInvokeProvider
El método siguiente es necesario para implementar la interfaz IInvokeProvider .
Miembros requeridos | Tipo de miembro | Notas |
---|---|---|
Invocar | Método |
Invoke es una llamada asincrónica y debe devolverse inmediatamente sin bloquear. 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. |
Este patrón de control no tiene eventos o propiedades asociados.