Pre .net Estaba usando MFC, ON_UPDATE_COMMAND_UI y la clase CCmdUI para actualizar el estado de mi IU de Windows. De la referencia anterior de MFC/Win32:Actualización de objetos de IU en formularios de Windows
Normalmente, los elementos del menú y los botones de la barra de herramientas tienen más de un estado. Para el ejemplo , un elemento del menú aparece gris (atenuado) si no está disponible en el contexto actual . Los elementos del menú también pueden marcar marcar o desmarcar. El botón de la barra de herramientas también se puede deshabilitar si no está disponible, o se puede marcar.
¿Quién actualiza el estado de estos elementos a medida que cambian las condiciones del programa? Lógicamente, si un elemento de menú genera un comando manejado por, por ejemplo, un documento , tiene sentido que el documento actualice el elemento del menú. El documento probablemente contiene la información en la que se basa la actualización .
Si un comando tiene múltiples objetos de interfaz de usuario (tal vez un elemento de menú y un botón de la barra de herramientas), ambos son encaminado a la misma función de controlador. Esto encapsula el código de actualización de la interfaz de usuario para todos los objetos de interfaz de usuario equivalentes en un solo lugar .
El marco proporciona una interfaz conveniente para actualizar automáticamente objetos de interfaz de usuario. Puede elegir para realizar la actualización de alguna otra forma, pero la interfaz proporcionada es eficiente y fácil de usar.
¿Cuál es la guía para .net Windows Forms? Estoy usando un controlador Application.Idle en el formulario principal, pero no estoy seguro de que esta sea la mejor manera de hacerlo. En el momento en que puse todas las actualizaciones de UI en el controlador de eventos de Idle, mi aplicación comenzó a mostrar algunos problemas de rendimiento y todavía no tengo las métricas para rastrear esto. No estoy seguro de si está relacionado.
¿Qué es exactamente estás tratando de hacer de nuevo? ¿Estás tratando de deshabilitar los controles en las aplicaciones de WinForms? –
Desactivar/habilitar botones de la barra de herramientas, elementos de menú, etc. Marque/desmarque el estado de los botones de verificación en la barra de herramientas, elementos de menú que muestran un estado de verificación. Esa clase de cosas. Cosas muy rutinarias –
Sí, Application.Idle. Cómo puede tener un problema de rendimiento cuando la aplicación está inactiva es misterioso. –