Windows Forms: cómo ocultar el botón Cerrar (x)?

Tengo un diálogo modal y necesito ocultar el botón Cerrar (X), pero no puedo usar ControlBox = false , porque necesito mantener los botones Minimizar y Maximizar.

Necesito ocultar solo el botón Cerrar, ¿hay alguna manera de hacerlo?

¡Muchas gracias!

Actualización: tenía permiso para desactivarlo, lo cual es más simple 🙂 ¡Gracias a todos!

No puede ocultarlo, pero puede deshabilitarlo anulando la propiedad CreateParams del formulario.

 private const int CP_NOCLOSE_BUTTON = 0x200; protected override CreateParams CreateParams { get { CreateParams myCp = base.CreateParams; myCp.ClassStyle = myCp.ClassStyle | CP_NOCLOSE_BUTTON ; return myCp; } } 

Fuente: http://www.codeproject.com/KB/cs/DisableClose.aspx

Podemos ocultar el botón de cerrar en el formulario estableciendo this.ControlBox=false;

Bueno, puedes ocultarlo, eliminando todo el menú del sistema:

 private const int WS_SYSMENU = 0x80000; protected override CreateParams CreateParams { get { CreateParams cp = base.CreateParams; cp.Style &= ~WS_SYSMENU; return cp; } } 

Por supuesto, al hacerlo, se eliminan los botones minimizar y maximizar.

Si conserva el menú del sistema pero elimina el elemento de cierre, el botón de cerrar permanece pero está desactivado.

La última alternativa es pintar el área no cliente usted mismo. Eso es bastante difícil de hacer bien.

Si realmente desea ocultarlo, como en “no visible”, entonces probablemente tendrá que crear una forma sin márgenes y dibujar los componentes de título usted mismo. La biblioteca VisualStyles tiene los elementos de Windows disponibles. También debería volver a agregar la funcionalidad de cambiar el tamaño del formulario o mover el formulario tomando la barra de título. Por no mencionar el menú del sistema en la esquina.

En la mayoría de los casos, es difícil justificar que el botón “cerrar” no esté disponible, especialmente cuando se quiere un formulario modal con capacidades de minimización. Minimizar una forma modal realmente no tiene sentido.

puedes ocultar el cuadro de cierre usando

 this.ControlBox = false; 

y no te olvides de agregar espacios en blanco a esto. this.Text = " " para que sea así

enter image description here

En las propiedades de su formulario, establezca ‘Caja de control’ = False, pero también se ocultará Minimized y Maximize.

Bueno, puedes ocultar el botón Cerrar cambiando el FormBorderStyle de la sección de propiedades o programáticamente en el constructor usando:

 public Form1() { InitializeComponent(); this.FormBorderStyle = FormBorderStyle.None; } 

luego creas un elemento de tira de menú para salir de la aplicación.

aclamaciones

si esta es una opción, puede configurar

  this.FormBorderStyle = FormBorderStyle.None; 

luego recrear los botones minimizar y maximizar

  private void button1_Click(object sender, EventArgs e) { this.WindowState = FormWindowState.Maximized; } private void button2_Click(object sender, EventArgs e) { this.WindowState = FormWindowState.Minimized; }