2008-09-18 12 views
7

Tengo una aplicación de Windows Forms 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).¿Cómo habilito/deshabilito Cortar/Copiar/Pegar menú y elementos de la barra de herramientas de forma genérica?

Mi aplicación tiene una barra de menú con un artículo que contiene Editar Cortar/Copiar/Pegar/Eliminar elementos, y una barra de herramientas con estos artículos también. ¿Cómo puedo activar/desactivar estos elementos correctamente dependiendo del estado del control que tiene el foco?

Busco una forma genérica, es decir, busco una implementación que hago una vez, y puede volver a utilizar para el futuro independiente de los controles a utilizar mi aplicación.

Respuesta

0

Crea 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, deshabilite solo el ciclo a través de la matriz e invoque el método o función habilitar/deshabilitar para cada control. Nuevamente, dependiendo del idioma, es posible que deba revertirlo.

3

No hay una interfaz genérica o un conjunto de métodos para obtener información de cortar/copiar/pegar desde un control de formularios de Windows.

Sugiero que su mejor enfoque sería 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.

Cuestiones relacionadas