Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/05/2011, 07:48
eloy_ameneiros
 
Fecha de Ingreso: julio-2010
Mensajes: 93
Antigüedad: 13 años, 9 meses
Puntos: 0
Recargar form padre al guardar datos de form hijo (WinForm)

Buenas tardes a todos, tengo una duda que no soy capáz de resolver. La estructura de mi aplicación es la siguiente:

- Tengo un form principal "Usuarios" que contiene un flowlayout panel, el cual se carga con un control de usuario que trae los datos mediante linq de SQL.

- Tengo un segundo form "Gestion_usuarios" que se puede abrir de dos formas:

*Mediante doble clic en el control de usuario (Se abre para editar los datos de ese usuario en concreto).
*Mediante un boton que en el form principal (Para añadir un usuario nuevo).

Lo que necesito es que al darle al boton guardar del form "Gestion_usuarios" me actualice el form "Usuarios" con los cambios que hayan hecho en la BD.

Muchas gracias a todos por la ayuda.

El código es el siguiente:

Cita:
User_Control

public partial class Comercial_CU : UserControl
{
public Comercial_CU(string nombre, string turno, Image imagen)
{
InitializeComponent();
lbl_nombre.Text = nombre;
lbl_turno.Text = turno;
if (imagen != null)
{
pB_foto.Image = imagen;
}
}

private void Comercial_CU_Load(object sender, EventArgs e)
{
this.lbl_nombre.DoubleClick += Pinchar;
this.lbl_turno.DoubleClick += Pinchar;
this.pB_foto.DoubleClick += Pinchar;
this.DoubleClick += Pinchar;
}

private void Pinchar(object sender, EventArgs e)
{
Gestion_Comerciales gc = new Gestion_Comerciales();
gc.nComercial = lbl_nombre.Text;
gc.ShowDialog();
}
}

Form Principal "Usuarios"

public partial class Comerciales : Form
{
SQLDataContext s = new SQLDataContext();
public Comerciales()
{
InitializeComponent();
}

private void Comerciales_Load(object sender, EventArgs e)
{
fLP_panel.Controls.Clear();
var comerciales = from cm in s.Operadoras
join t in s.Turnos on cm.Turno equals t.Uid
select new
{
comercial = cm.Nombre,
turno = t.Descripcion,
foto = cm.Foto
};
foreach (var com in comerciales)
{
Image foto = null;
if(com.foto != null)
{
foto = this.CargarImagen(com.foto.ToArray());
}
Comercial_CU op = new Comercial_CU(com.comercial, com.turno, foto);
fLP_panel.Controls.Add(op);
Application.DoEvents();
}
}

private void bt_ok_Click(object sender, EventArgs e)
{
this.Close();
}

private void bt_nuevo_Click(object sender, EventArgs e)
{
Gestion_Comerciales gc = new Gestion_Comerciales();
gc.ShowDialog();
}

private Image CargarImagen(byte[] img)
{
Bitmap bmp = null;
byte[] bytes = (byte[])(img);
MemoryStream ms = new MemoryStream(bytes);
bmp = new Bitmap(ms);
return bmp;
}
}

Form Secundario "Gestion_usuarios"

private void bt_aceptar_Click(object sender, EventArgs e)
{
byte[] imagen = null;
if (pb_foto.Image != null)
{
imagen = this.GuardarImagen(pb_foto.Image);
}
if (_nComercial == null)
{
Operadoras operadora = new Operadoras();
operadora.Nombre = txt_nombre.Text;
operadora.Empresa = cmb_empresa.SelectedItem.ToString();
if (txt_dni.Text != "")
{
operadora.DNI = txt_dni.Text;
}
if (txt_direccion.Text != "")
{
operadora.Direccion = txt_direccion.Text;
}
if (txt_telefono.Text != "")
{
operadora.Telefono = txt_telefono.Text;
}
if (txt_comentarios.Text != "")
{
operadora.Comentarios = txt_comentarios.Text;
}
if (imagen != null)
{
operadora.Foto = imagen;
}
Turnos turno = s.Turnos.Single(trn => trn.Descripcion == cmb_turno.SelectedItem.ToString());
turno.Operadoras.Add(operadora);
s.SubmitChanges();
}
else
{
Operadoras operadora = s.Operadoras.Single(opr => opr.Nombre == _nComercial);
operadora.Nombre = txt_nombre.Text;
operadora.Empresa = cmb_empresa.SelectedItem.ToString();
if (txt_dni.Text != "")
{
operadora.DNI = txt_dni.Text;
}
if (txt_direccion.Text != "")
{
operadora.Direccion = txt_direccion.Text;
}
if (txt_telefono.Text != "")
{
operadora.Telefono = txt_telefono.Text;
}
if (txt_comentarios.Text != "")
{
operadora.Comentarios = txt_comentarios.Text;
}
if (imagen != null)
{
operadora.Foto = imagen;
}
else
{
operadora.Foto = null;
}
Turnos turno = s.Turnos.Single(trn => trn.Descripcion == cmb_turno.SelectedItem.ToString());
turno.Operadoras.Add(operadora);
s.SubmitChanges();
}
this.Close();
}