none
Cerrar Ventana al abrir otra. RRS feed

  • Pregunta

  • Buenas tardes.

    Saludos! tengo una dificultad, como puedo cerrar todas los formularios abiertos? he hecho un login que luego va dar a un segundo formulario y cuando lo cierro el primero queda en ejecución.

    aqui el codigo que he usado

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;

    namespace eMOVINS
    {
        public partial class Form2 : Form
        {
            public Form2()
            {
                InitializeComponent();
            }

            private void button1_Click(object sender, EventArgs e)
            {
                if(this.textBox1.Text=="joser"&&this.textBox2.Text=="joser")

                {
                    Form1 llamar=new Form1();
                    llamar.Show();
                    this.Hide();

                }

                else
                {
                    MessageBox.Show("Error");
                }

            }
        }
    }

    Muchas Gracias por su ayuda


    • Editado Joser84 jueves, 14 de marzo de 2019 21:12
    jueves, 14 de marzo de 2019 21:00

Todas las respuestas

  • cuando lo cierro el primero queda en ejecución.

    Bueno, tal como lo tienes haces un this.Hide(), que precisamente significa "ocultar este formulario pero dejarlo en ejecución". Si quieres cerrarlo sin que quede "vivo", puedes poner this.Close() en lugar del Hide. Sin embargo, si ese formulario era el primero que iniciaste, al hacerle Close eso hace que se cierre TODO el programa, incluyendo todos los demás formularios. El inverso también es cierto: si cierras un formulario que NO sea el primero, entonces NO se cierra el programa y queda en ejecución. ¿Y desde dónde se controla esto? Desde al Program.cs. Si lo abres, verás que hace Application.Run(formulario principal). Ese formulario principal es el que controla que si lo cierras entonces te cierra toda la aplicacíón. Así que tienes que hacer tu diseño de aplicación teniendo en cuenta que lo que pongas en el Main es lo que controlará la apertura y cierre de la aplicación. Puedes poner ahí un formulario que mantengas oculto y que a su vez abra el primero que quieras mostrar, y cuando cierres el último que ese le envíe al principal una orden de cerrarse. También puedes meter más código en el Main detrás del Application.Run.

    https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.application.run?view=netframework-4.7.2

    viernes, 15 de marzo de 2019 7:29
    Moderador