nkdos Posted April 7, 2011 Report Share Posted April 7, 2011 (edited) 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 April 7, 2011 by nkdos Link to comment Share on other sites More sharing options...
Argel Posted April 8, 2011 Report Share Posted April 8, 2011 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 More sharing options...
nkdos Posted April 8, 2011 Author Report Share Posted April 8, 2011 sabes, me da un error if(!objsalir.SuperSalir(this)) me dice Error 1 Ninguna sobrecarga para el método 'SuperSalir' toma '1' argumentos. Link to comment Share on other sites More sharing options...
Argel Posted April 12, 2011 Report Share Posted April 12, 2011 Sep, es que el metodo SuperSalir toma 2 parametros el Form y el FormClosingEventArgs. My Mistake... Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now