Jump to content

Problema al cerrar aplicación


Recommended Posts

Bueno les cuento, estoy recien aprendiendo C# y estoy tratando de hacer "seudoprogramas" para ir practicando. Resulta que tengo un problema al cerrar la aplicación, lo que hice fue lo siguiente:

 

 

1.- Cree una clase llamada Salir, para asi despues solo llamarla desde los formularios, esta contiene lo siguiente:

 

public void SuperSalir(Form Salida)
        {
            DialogResult opcion;
            opcion = MessageBox.Show("Desea Salir de la Aplicación", //Pregunta
                                "Salir de la aplicación", //Nombre formulario
                                MessageBoxButtons.YesNo, //Opciones
                                MessageBoxIcon.Question);
            if (opcion == DialogResult.Yes) //Toma de desiciones
            {
                Salida.Dispose();
            }

 

2.- En el formulario, cree el evento FormClosing y quedo de la siguiente forma:

 

        private void Formulario_FormClosing(object sender, FormClosingEventArgs e)
        {
            Salir objsalir = new Salir();
            objsalir.SuperSalir(this);
        }

 

No existe un error al compilar, el problema viene que cuando apreto la X para cerrar, me sale la pregunta, si le digo que si, se cierra (ningun problema), pero si le apreto que no, tambien se cierra, y es este el problema :S

 

que sera lo que estoy haciendo mal??

Edited by nkdos
Link to comment
Share on other sites

un poco tarde la respuesta pero, bueno, por lo visto te faltaría cancelar el evento cerrar cuando la opcion es NO, me explico, el Evento FormClosing tiene como parametros el "FormClosingEventArgs e" este debe tener la propiedad e.cancel que debes setear en true para que el evento cerrar no gatille efectivamente el cierre del formulario. la clase la podrias dejar así

 

public bool SuperSalir(Form Salida, FormClosingEventArgs ev){
            bool retorno = false;
            DialogResult opcion;
            opcion = MessageBox.Show("Desea Salir de la Aplicación", //Pregunta
                                "Salir de la aplicación", //Nombre formulario
                                MessageBoxButtons.YesNo, //Opciones
                                MessageBoxIcon.Question);
            if (opcion == DialogResult.Yes) //Toma de desiciones
            {
                Salida.Dispose();
                retorno = true;
            }
            return retorno;
}

 

private void Formulario_FormClosing(object sender, FormClosingEventArgs e)
        {
            Salir objsalir = new Salir();
            if ( !objsalir.SuperSalir(this) )
                e.cancel = true;
        }

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...