Tengo 2 formularios ... cuando comienzo la aplicación ... y uso el cierre "X" de la barra de título, la aplicación completa se cierra ... ahora cuando selecciono una opción del primer formulario en mi caso, es un botón "AGREGAR" ya que es una aplicación de directorio telefónico ... va a la 2ª forma ya que he usado 1stform.hide() y 2ndform.show() ... ahora cuando hago "X" desde el barra de título no se cierra por completo ya que 1stform no está cerrado ... cómo programarlo de forma que en cualquier etapa se cierre toda la aplicaciónPara cerrar la aplicación de formularios C#
Respuesta
Su primer formulario se configura como el formulario de inicio. Eso significa que cada vez que se cierra, toda la aplicación se cierra. Y a la inversa, su aplicación no se cierra hasta que se cierra. Entonces, cuando oculta el formulario de inicio y muestra el segundo formulario, el usuario que cierra el segundo formulario no activa el cierre de la aplicación porque solo ha cerrado un diálogo secundario no modal.
Recomiendo cambiar su diseño para que el formulario de inicio también sea el formulario principal de su aplicación. No tiene sentido tratar de evitar la funcionalidad incorporada que realmente puede ser útil. Desea que la aplicación se cierre cuando se cierra el formulario principal, sin importar qué otros formularios secundarios estén abiertos.
Pero la solución rápida y sucia en su caso es hacer una llamada al Application.Exit
. Eso cerrará todos de los formularios actualmente abiertos y saldrá de su aplicación inmediatamente. Como dije justo arriba, no recomiendo mucho este enfoque porque tener que llamar al Application.Exit
desde el controlador de eventos FormClosed
de cada formulario es una señal de que algo ha ido muy mal en su diseño.
Si el paradigma de formulario de inicio único no funciona para usted, debe considerar tomar las cosas en sus propias manos y personalizar el método Program.cs
en su archivo fuente Program.cs
. Consulte las respuestas dadas al this related question para obtener algunas ideas sobre cómo podría funcionar para usted.
+1: ¡Buena respuesta! –
¿Qué es CloseEvent? .... ¿Se supone que debo escribirlo? –
@Vinod: Quise decir el evento 'FormClosed'. La documentación está disponible [aquí] (http://msdn.microsoft.com/en-us/library/system.windows.forms.form.formclosed.aspx), pero es solo un evento normal expuesto por la clase 'Form' . Puede suscribirse como cualquier otro evento en su aplicación (por ejemplo, 'Button.Click'). –
Lo que puede hacer es usar el evento FormClosing
del Formulario y agregar el siguiente código:
Application.Exit();
Esto detendrá la aplicación completa y cerrará todas las ventanas. Sin embargo, si se está ejecutando un hilo de fondo, el proceso en sí sobrevivirá. En este caso se puede usar:
Environment.Exit();
Un hilo de fondo no impide que el proceso se cierre, ya que se apaga automáticamente.Probablemente te estás refiriendo a un hilo en primer plano. –
@ João Angelo - Lo que quise decir aquí es que si se están ejecutando varios hilos, solo se eliminará el hilo de la GUI, y la aplicación parecerá cerrada, pero el proceso todavía está allí en la lista de procesos. Gracias por señalar :) –
Añadir un Application.Exit el caso de las formas cada cierre
así:
Crear un controlador de eventos de cierre primera
private void Form_ClosingEventhandler()(object sender, CancelEventArgs e)
{
//Perform any processing if required like saving user settings or cleaning resources
Application.Exit();
}
continuación, se unen este evento a cualquier forma que crees
//Where you create new form and show it.
Form1 frm= new Form1();
//set other properties
frm.Closing += new EventHandler(Form_ClosingEventhandler);
Form2 frm2= new Form2();
//set other properties
frm2.Closing += new EventHandler(Form_ClosingEventhandler);
funcionó para mí, gracias! +1 – Vbp
Seguramente no desea cerrar toda la aplicación después de que el usuario agregue un número de teléfono? Solo necesita asegurarse de que su ventana principal se vuelva a ver. Escríbalo así:
private void AddButton_Click(object sender, EventArgs e) {
var frm = new AddPhoneNumber();
frm.StartPosition = FormStartPosition.Manual;
frm.Location = this.Location;
frm.Size = this.Size; // optional
frm.FormClosing += delegate { this.Show(); };
frm.Show();
this.Hide();
}
- 1. Encuentra los formularios abiertos en la aplicación de Windows C#
- 2. Cerrar la aplicación para Android
- 3. Pregunta al usuario antes de cerrar la aplicación C# WPF
- 4. ¿Qué evento atrapar para cerrar la aplicación?
- 5. programmatic cerrar la aplicación win8
- 6. C++ MultiThreading con visual studio express 2010 Formularios Aplicación
- 7. ¿Comando para cerrar una aplicación de la consola?
- 8. Cerrar la aplicación de Excel usando VBA
- 9. IU automatizada probando una aplicación grande de formularios C#
- 10. Cerrar una aplicación de otra en C# .net
- 11. Cerrar socket al finalizar la aplicación
- 12. botón Escape para cerrar Windows Forms forman en C#
- 13. Evite cerrar la aplicación Java swing
- 14. Creación de asistentes para formularios de Windows en C#
- 15. Cerrar la aplicación Java antes de cada ejecución en Eclipse
- 16. Cerrar una aplicación usando WiX
- 17. Instalador para la aplicación C#
- 18. Servicio web ASP.NET dentro de la aplicación Autenticación de formularios
- 19. ASP.NET MVC verdaderamente cerrar la sesión con la autenticación de formularios
- 20. java swing cerrar la ventana sin salir de la aplicación
- 21. C# cerrar estándar
- 22. Cerrar mediante programación una aplicación de AIR
- 23. ¿Cerrar archivo sin salir de la aplicación VIM?
- 24. Cómo cerrar otro proceso de C#
- 25. Licencia para la aplicación de escritorio C#
- 26. ¿Cómo cerrar la aplicación antes de que esté completamente cargada?
- 27. Para cerrar o no cerrar una conexión de Oracle?
- 28. Cómo finalizar subprocesos anónimos en Delphi al cerrar la aplicación?
- 29. ¿Buenas prácticas para abrir/cerrar conexiones en una aplicación asp.net?
- 30. Cómo cerrar una aplicación pygtk después de cerrar la última ventana/destruirla
de "En cualquier etapa", ¿se refiere a alguna forma? –
sí ... De cualquiera de los formularios ... solo hay 3 en mi caso –