winforms - mostrar - menu ver
¿Cómo habilito/deshabilito Cortar/Copiar/Pegar menú y elementos de la barra de herramientas de forma genérica? (2)
Tengo una aplicación de formularios de Windows con controles como textbox, combobox, datagridview, etc. Estos controles permiten a un usuario usar el clipboad, es decir, cortar / copiar y pegar texto. También es posible eliminar texto (que no está relacionado con el portapapeles).
Mi aplicación tiene una barra de menú con un elemento Editar que contiene los elementos Cortar / Copiar / Pegar / Eliminar, y una barra de herramientas con estos elementos también. ¿Cómo puedo activar / desactivar estos elementos correctamente dependiendo del estado del control que tiene el foco?
Estoy buscando una forma genérica, es decir, busco una implementación que hago una vez, y puedo reutilizarla para el futuro independientemente de los controles que usará mi aplicación.
Cree una matriz para cada grupo habilitar / deshabilitar. Agregue los controles a la matriz (por supuesto, tiene que ser del tipo correcto, como Objeto o Cualquiera, etc. depende del lenguaje de programación que esté utilizando). Luego, para habilitar, deshabilitar solo el ciclo a través de la matriz e invocar el método o función habilitar / deshabilitar para cada control. Nuevamente, dependiendo del idioma, es posible que deba revertirlo.
No existe una interfaz genérica o conjunto de métodos para obtener información de cortar / copiar / pegar desde un control de formularios de Windows.
Sugiero que su mejor enfoque sea crear una clase contenedora para cada tipo de control. Luego, cuando desee actualizar el estado del menú, obtendrá el control actual con enfoque y creará el contenedor apropiado para él. Luego le pides a ese contenedor la información del estado que necesitas. De esta forma, solo necesita crear una implementación de contenedor para cada tipo de control que use. Es un poco doloroso para empezar, pero en otra ocasión solo necesitas agregar los nuevos controles que encuentras.
La información del portapapeles es mucho más fácil ya que puede preguntar al singleton del portapapeles si tiene datos dentro y de qué tipo es. Por otra parte, aún debe solicitarle al control objetivo si puede aceptar ese tipo de información, por lo que todavía hay necesidades de trabajo adicionales.