none
Cerrar ventanas

    Question

  • Hola amigos, denuevo por acá. Tengo una consulta, resulta que tengo un form container y tengo un formulario hijo, el formulario hijo tengo seteado el evento formclosing para confirmar si realmente se quiere cerrar la ventana y a su vez el formulario container tiene su respectivo formclosing si realmente se quiere salir de la aplicación, el problema es el siguiente: cuando tengo abierto el formulario hijo y quiero cerrar la aplicación me muestra el mensaje formclosing del formulario hijo pidiendo si realmente se quiere cerrar la ventana y después aparece el mensaje del formclosing del container. Existe alguna forma de omitir el mensaje del formclosing hijo al momento de cerrar la aplicación para que solo aparezca el mensaje de cerrar la aplicación?

    Saludos y gracias

    Ojalá me puedan ayudar un abrazo a todos
    Tuesday, February 23, 2010 8:16 PM

Answers

  • hola

    buscando sobre el tema note que en el argumento del FormClosing hay un parametro interesante

    e.CloseReason

    si en el form hijo haces


            private void Form2_FormClosing(object sender, FormClosingEventArgs e)
            {
                if (e.CloseReason != CloseReason.MdiFormClosing)
                {
                    DialogResult Mensaje = MessageBox.Show("¿Está seguro que desea cerrar el Formulario?", "Confirmación", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                    if (Mensaje == DialogResult.Yes)
                        e.Cancel = false;
                    else
                        e.Cancel = true;
                }
            }

    deberia no mostrarte el mensaje de los formulario hijos al cerrarse

    saludos
    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    Wednesday, February 24, 2010 2:04 PM

All replies

  • hola

    podrias usar la propiedad

    Application. OpenForms Property

    para preguntar si hay ventanas abiertas y decidir si debes mostrar el mensaje que pide confirmacion para cerrar las ventanas

    esto lo puedes hacer desde el FormClosing del form mdi indicando que hay ventanas hijas por cerrar

    tambien podrias usar

    Form. MdiChildren (Propiedad)

    para determinar los formulario hijos del mdi container

    saludos
    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    Tuesday, February 23, 2010 9:02 PM
  • Muchas gracias Leandro, voy a checar, espero que me sirva Gracias nuevamente.

    ABRAZOS
    Tuesday, February 23, 2010 9:22 PM
  • Leandro me puedes dar una idea de como podria ser? creo que podría ser con count de la propiedad openforms dentro del botón X del formulario principal, sería algo así:

     private void frmPrincipal_FormClosing(object sender, FormClosingEventArgs e)
     {
          if (Application.OpenForms.Count > 1)
          {
                DialogResult Mensaje = MessageBox.Show("Cierre todas las ventanas antes de salir de la aplicación", "Advertencia", MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1);
                return;
          }
          else
          {
                DialogResult Mensaje = MessageBox.Show("¿Está seguro que desea salir de la aplicación?", "Confirmación", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2);
                if (Mensaje == DialogResult.Yes)
                {
                    e.Cancel = false;
                }
                else
                {
                    e.Cancel = true;
                    return;
                }
          }
    }

     

     


    pero como le digo al sistema que no muestre el evento del formclosing del formulario hijo? me podrias dar una idea por favor?

    Gracias SALUDOS

    • Marked as answer by manisero Monday, March 01, 2010 7:16 PM
    • Unmarked as answer by manisero Monday, March 01, 2010 7:16 PM
    Tuesday, February 23, 2010 10:07 PM
  •  Seria muchos mas sencillo usar un arraylist, que guarda cada ventana hijo, de esta manera se puede cerrar sin problema una determinada ventana hijo, sin pasa por ese mensaje que solo se mostraría el mensaje cerrar ventana cuando realmente solo hay una ventana por cerrar.
    • Marked as answer by manisero Wednesday, February 24, 2010 7:29 PM
    • Unmarked as answer by manisero Wednesday, February 24, 2010 7:29 PM
    Tuesday, February 23, 2010 10:49 PM
  • hola

    buscando sobre el tema note que en el argumento del FormClosing hay un parametro interesante

    e.CloseReason

    si en el form hijo haces


            private void Form2_FormClosing(object sender, FormClosingEventArgs e)
            {
                if (e.CloseReason != CloseReason.MdiFormClosing)
                {
                    DialogResult Mensaje = MessageBox.Show("¿Está seguro que desea cerrar el Formulario?", "Confirmación", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                    if (Mensaje == DialogResult.Yes)
                        e.Cancel = false;
                    else
                        e.Cancel = true;
                }
            }

    deberia no mostrarte el mensaje de los formulario hijos al cerrarse

    saludos
    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    Wednesday, February 24, 2010 2:04 PM
  • jojojo geniaso compadre... eres muy ingenioso genial, muchas gracias amigo me resultó a la perfección

    Saludos y un abrazo compadre

    PD: Gracias por ayudar!
    Wednesday, February 24, 2010 7:06 PM