Cómo desactivar el botón e cerrar ventana (la equis) y dejar los botones minimizar y maximizar activos en un formulario en C# (C Sharp) de Visual Studio .Net. Evitar que una aplicación se cierre en C#.

Impedir el cierre de una aplicación en C#

En algunas aplicaciones queremos que, por seguridad, siempre permanezcan abiertas y no puedan ser cerradas. Para ello podremos realizar varias tareas en nuestra aplicación C#, una de ellas es desactivar el botón cerrar (la equis) del formulario/ventana:

Desactivar el botón cerrar de una ventana en C#

Que explicamos cómo hacerlo en esta sección del artículo.

También se puede optar por dejar activo el botón cerrar e invalidar su acción/evento. Es decir, cuando el usuario pulse el botón cerrar de la ventana, invalidar el cierre. Para ello habría que añadir el siguiente código C# en el evento FormClosing del formulario:

De esta forma, aunque se pulsara el botón cerrar o se intentara cerrar la aplicación de cualquier otra forma, por ejemplo ejecutando Application.Exit(), o bien pulsando las teclas Alt + F4, o bien cerrándola desde la barra de tareas, se ejecutaría el evento FormClosing y el código anterior invalidaría el cierre.

Desactivar el botón cerrar de una ventana en C#

Aún así, si queremos desactivar el botón de cerrar formulario, sin código, podremos establecer a False la propiedad ControlBox del formulario:

Desactivar el botón cerrar de una ventana en C#

Pero en este caso, aunque tengamos a True las propiedades MaximizeBox y MinimizeBox, estos botones no aparecerán. Tampoco aparecerá el icono de la aplicación:

Desactivar el botón cerrar de una ventana en C#

Si queremos que se muestren los botones de minimizar y maximizar y, a su vez, que el botón de cerrar esté desactivado, realizaremos las siguientes acciones.

En primer lugar, en los import (using) del formluario agregaremos el siguiente código:

A continuación, en la clase del formulario, agregaremos el siguiente código:

En el evento Load del formulario agregaremos el siguiente código:

Si lo dejáramos así, funcionaría cuando la aplicación se inicia, pero si el usuario minimiza o cambia el tamaño de la ventana o la desenfoca y la enfoca, el botón de cerrar volvería a activarse. Para evitar esto, añadimos el mismo código anterior al evento Resize del formulario:

Ahora sí que tendremos el botón de cerrar ventana desactivado y el de minimizar y maximizar visibles y activados:

Desactivar el botón cerrar de una ventana en C#

Desactivando el botón cerrar no impediremos que el usuario cierre la aplicación, podría hacerlo, por ejemplo, pulsando las teclas Alt + F4, o también pulsando con el botón derecho sobre la aplicación en la barra de herramientas y eligiendo «Cerrar …»:

Desactivar el botón cerrar de una ventana en C#

Para evitar este cierre, seguiremos los pasos que indicamos aquí.