none
Form no se cierra RRS feed

  • Pregunta

  • Tengo tres forms he intentado varias cosas, pero no logro hacer que uno de los forms se cierre y al cerrarse actualize el datagridview de un segundo form...

    He agregado diferentes definiciones para el evento FormClosed del form3, el ultimo que probe sin exito fue en el mismo form3, definir su evento formclosed, lo hice de la siguiente manera

    private void Form3_FormClosed(object sender, FormClosedEventArgs e)
        {
          form4.cargargrilla();
          this.Close();
        }
    
    El error esta en que a pesar de hacer click en la X de la barra de titulo el formulario simplemente no se cierra, aun con el this.close();, ojala que me pudieran ayudar, muchas gracias!

    lunes, 22 de noviembre de 2010 17:53

Respuestas

  • hola

    una recomendacion no abras tanto hilos sobre el mismo tema, ya tienes dos sobre los mismo

    http://social.msdn.microsoft.com/Forums/es-ES/vcses/thread/6878ed10-7248-4912-b565-36fc89f7187e

    http://social.msdn.microsoft.com/Forums/es-ES/vcses/thread/f190bb17-58b7-41d4-98ff-963180b73d2d

    es bastante complejo seguirlos sino cierras primero uno

     

    si usas el this.Close() en el evento FormClosed del Form3 no estaras cerrando ni el Form3 ni el Form4, estaras cerrando el form actual dodne has declarado ese codigo

    el Close() debes ponerlo en el evento del boton que cierra el form3

    en el Form3 podrias poner un boton que tenga este codigo

    private void btnCerrar_click(...){

      this.Close();

    }

    esto hara que se lance el FormClosed del Form3 que tomarias apra actualziar la grilla

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    lunes, 22 de noviembre de 2010 18:46
  • hola

    se genera una excepcion con la conexion puse un try con un catch

    y puedes visualziar el mensaje de error que se produce, seguro ayudaria a determinar la causa del problema

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    lunes, 22 de noviembre de 2010 22:36

Todas las respuestas

  • this.visible=false;

     

    lunes, 22 de noviembre de 2010 18:31
  • Creo te falta subscribir el evento. pon la siguiente linea en tu evento Load.

    this.FormClosed += new FormClosedEventHandler(this.Form3_FormClosed);

    saludos.

    lunes, 22 de noviembre de 2010 18:35
  • hola

    una recomendacion no abras tanto hilos sobre el mismo tema, ya tienes dos sobre los mismo

    http://social.msdn.microsoft.com/Forums/es-ES/vcses/thread/6878ed10-7248-4912-b565-36fc89f7187e

    http://social.msdn.microsoft.com/Forums/es-ES/vcses/thread/f190bb17-58b7-41d4-98ff-963180b73d2d

    es bastante complejo seguirlos sino cierras primero uno

     

    si usas el this.Close() en el evento FormClosed del Form3 no estaras cerrando ni el Form3 ni el Form4, estaras cerrando el form actual dodne has declarado ese codigo

    el Close() debes ponerlo en el evento del boton que cierra el form3

    en el Form3 podrias poner un boton que tenga este codigo

    private void btnCerrar_click(...){

      this.Close();

    }

    esto hara que se lance el FormClosed del Form3 que tomarias apra actualziar la grilla

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    lunes, 22 de noviembre de 2010 18:46
  • Bueno el this.close(); esta en el form3... Al parecer no tiene nada que ver con el evento formclosed tiene algo que ver con la funcion de cargarlagrilla();

    Tengo problemas con la conexion a la base de datos, al cerrar el form3,  se genera una excepcion con la conexion puse un try con un catch y me di cuenta de eso. La funcion para cargar la grilla es la siguiente:

        public void cargargrilla()
        {      
          dataGridView1.AutoGenerateColumns = false;
          
    
          SqlConnection connection = new SqlConnection(connectionString);
          try
          {
            connection.Open();
          }
          catch (Exception ex1)
          {
            MessageBox.Show("Error en la conexion", "ERROR", MessageBoxButtons.OK);
          }
    
    
          SqlCommand command = new SqlCommand("SELECT * FROM [Almacen].[dbo].[Producto];", connection);
          command.CommandType = CommandType.Text;
    
    
            SqlDataAdapter adaptador = new SqlDataAdapter(selectCommText,connection);
          adaptador.TableMappings.Add("Table", "Producto");
          adaptador.SelectCommand = command;
          
    
          // Fill the DataSet.
          
          DataSet conjunto = new DataSet();
          conjunto.DataSetName = "Producto";
          
          adaptador.Fill(conjunto);
    
          
          bindingSource1.DataSource = conjunto;
          bindingSource1.DataMember = "Producto";
    
          dataGridView1.DataSource = conjunto;
          dataGridView1.DataMember = "Producto";
          dataGridView1.AutoResizeColumn(4);           
        }
    

    Creo que mi error esta en cargar todo otra vez, existe algun otro comando que pueda usar solo para "actualizar " la informacion del datagridview.

    Lo siento pense que era un tema diferente ya no abrire tantos hilos del mismo tema.

    lunes, 22 de noviembre de 2010 18:55
  • Puedes hacer varias cosas para hacer eso. por ejemplo:

    Codigo de Form1. en el boton que carga el formulario 2, para esto tienes que haber agregado una propiedad publica tipo FORM1 en el FORM2, si no te gusta manejar propiedades publicas puedes hacer una sobrecarga del constructor que te la tome como parametro. en el ejemplo que te pongo esa propiedad se llama frm1.

      Form2  frm = new Form2();

      frm.frm1=this;

      frm.ShowDialog();

    en el Evento Closed del Formulario 2 escrbirias algo como esto.

      frm1.ActualizaGrid();

    EL Metodo ACtualiza Grid debe estár escrito en el FORM1.

    hay otros metodos pero ese es el que se me ocurre ahora, ojalá te ayude.


    Jackson Rosado Developer c#, VFP, PL/SQL DBA - Oracle 10g
    lunes, 22 de noviembre de 2010 22:13
  • hola

    se genera una excepcion con la conexion puse un try con un catch

    y puedes visualziar el mensaje de error que se produce, seguro ayudaria a determinar la causa del problema

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    lunes, 22 de noviembre de 2010 22:36