2009-09-15 17 views
6

Pregunta simple: Tengo un botón WinForms, y quiero que sea tanto (condicionalmente) invisible como deshabilitado (para asegurarse de que si alguien hace clic en el espacio donde vive el botón invisible, no lo activará). button.Visible = false también implica button.Enabled = false, o debo configurar/restablecer ambas propiedades en el momento apropiado?Botón de Winforms: ¿Visible = falso implica Enabled = false?

+1

Lo sé, no hay una pregunta estúpida/floja, pero en serio, ¿por qué no lo has intentado? :/ –

+2

¿Por qué necesita el botón deshabilitado si lo oculta de todos modos? Simplemente deshabilite la funcionalidad subyacente (probando alguna bandera, o como quiera que sepa que debe desactivar el botón). De esta forma, incluso si un usuario estúpido usa una herramienta para volver a mostrar su botón o para enviar un mensaje de ventana al botón invisible pero habilitado, su aplicación no hará cosas que no debería hacer. En otras palabras, si desea deshabilitar la funcionalidad, desactive la funcionalidad y no solo la puerta de entrada. – OregonGhost

Respuesta

5

Si el control no está visible, se desactiva de manera efectiva. Al hacer clic en el área donde aparecería (o entrar y salir de esa área) si fuera visible, no provocará un evento para disparar.

EDIT: Para aclarar, basado en otras respuestas y comentarios, el botón es no funcionalidad de eventos discapacitados y subyacente está aún disponible programación, pero el botón no estará disponible físicamente/visible en el formulario y el usuario no podrá interactuar con él de ninguna manera (a menos que usted, como programador, proporcione otro método programáticamente).

+0

Hay formas distintas de hacer clic con el mouse (como el teclado) para activar un botón. Leí su pregunta para preguntar si había alguna forma de presionar un botón, no solo se puede acceder a través del mouse. – recursive

+0

@recursive: Mientras su punto sea válido, esperaría que un control pierda el foco cuando está oculto, y que no puede volver a enfocarse. Sin embargo, esto podría no ser cierto, y no estoy seguro de qué ocurre con los mnemónicos. Pero incluso entonces, hay formas de presionar un botón sin mouse o teclado. UI Automation viene a la mente. – OregonGhost

1

Configuración Visible a falso no no cambiar la propiedad Habilitado. Sin embargo, establecer la propiedad en falso hace que el control efectivamente ni siquiera esté allí. Si hace clic en el espacio vacío dejado por un botón invisible, el evento de clic del botón no se disparará.

+0

Gracias, Joel. Eso es básicamente lo que necesitaba. Solo necesito asegurarme de que el usuario no pueda hacer clic en él. –

1

No creo que implique que esté deshabilitado. Simplemente significa que el control no es visible en el formulario, por lo tanto, no hay forma de realizar la acción en él. Si establece la propiedad visible en falso y luego invoca el evento Click a través del código, se procedería. Sin embargo, si establece la propiedad Enabled en False, me imagino que no sería

1

Bastante seguro si .Visible = false, la acción '_Click' está deshabilitada. Por ejemplo, si usted .PerformClick() en su código, y .Visible = true, se ejecutará _Click. Si es falso, _Click no se ejecutará.

Cuestiones relacionadas