Problema con C#

Iniciado por Hadess_inf, 4 Noviembre 2007, 04:23 AM

0 Miembros y 1 Visitante están viendo este tema.

Hadess_inf

Hola, agradeceria si alguien me puede ayudar con algunas dudas que tengo, el lenguage es .Net Aplicacion de Windows en C#.

1. Tengo 2 form(form1 y form2), desde el form1 abro el form2 como modal, en el fom2 hay un button, al dar click en el button se tienen que cerrar el form1 y form2(¿Como hago eso posible?). Desde el form1 abro el form2 con la siguiente instruccion:

CitarForm frm = new form2();
frm.Showdialog();

2. Tengo 2 form(form1 y form2) en el form1 hay un datagridview(datagridview1) este control esta conectado con la propiedad DATASOURCE a una tabla en una base de datos. Desde el form1 se abre un form2 en modo Modal (ShowDialog()). El problema es el siguiente, al cerrar el form2, se debe de actualizar el datagridview1(¿Como se hago esto posible?)

Desde ya gracias de antemano.

P[i]

 Para el primero se puede hacer de muchas formas una es utilizando eventos y quedaria algo como:


void Funcion_que_llama_al_form2()
{
  Form frm = new form2();
  //supongo que el boton se llama btncerrartodo
  frm.btncerrartodo.Click += new System.EventHandler(this.cerraresto);
  frm.ShowDialog();
}

void cerraresto (object sender, EventArgs e)
{
    this.Close();
}
/*
Como ves no hace falta meter nada en el form2 solo en code del form1.
*/



El 2 pues lo unico que se tiene que hacer es declarar publico el datagridview1 y despues cuando cierres el form2  creas un nuevo evente closed y pones algo como:


void CerrarForm2(object ......)
{
  Bueno y dentro de esto pues actualizamos ahora no me acuerdo muy bien de como era esto pero se encuentra rapido. no se si era update o algo asi.
}


Saludos.

gusman

Buenas.

También puedes crear una referencia al form de origen para poder acceder a sus controles, por ejemplo:

Código (csharp) [Seleccionar]
public partial class Form1 : Form
{

    //controles, variables y genas varias blablabla

    internal DataGridView dataGridView1;

    void mostrar_form2()
    {
           Form2 frm = new Form2();
           frm.parent = this;
           frm.ShowDialog();
    }


}

public partial class Form2 : Form
{

    //controles, variables y genas varias blablabla
   
    internal Form1 parent;

    void cerrarform()
    {
           parent.dataGridView1.Refresh(); //o update o lo que tengas que hacer
           this.close();

    }


}


Fíjate que en el form1 he definido el dgv como internal, es para que haya acceso entre los módulos de la misma aplicación; si los controles los metes desde el diseñador cámbiales la propiedad Modifier a internal.

Lo bueno de este sistema es que dispones todavía de los datos del Form2 cuando vas a refrescar, y pueden ser útiles para hacer distintas cosas dependiendo del contenido del interfaz.

Un saludo.
No está muerto todo lo que yace y con extraños evos hasta la misma muerte puede morir.