Buenas,
no entiendo muy bien quieres hacer...
por lo que puedo entender tienes el hilo principal de la aplicación en el Form1. Luego, en el Form2 lanzas otro hilo que recoge los datos de los usuarios, pero para ello tienes que acceder al Form1, ¿es correcto?
Ahora te explicaré de manera sencilla los delegados:
imagina que en el Form1 tienes una Label llamada LabelNombreUsuario, que quieres establecer desde el Form2.
Si realizas lo siguiente desde el Form2 :
Código:
Form1.LabelNombreUsuario.Text = "Pepito";
se lanzará una Excepción que te indica que no puedes acceder a esa label desde Form2, ya que solo se puede acceder a ese elemento desde Form1, que es quien lo crea.
¿Cómo accedemos entonces al Label? --> Empleando Delegados
En el Form1 creamos el delegado:
Código:
private delegate void SetLabelTextDelegate(string text);
y la función que nos permitirá modificar la Label:
Código:
public void SetLabelText(string text)
{
if(!InvokeRequired)
{
LabelNombreUsuario.Text = text;
}
else
Invoke(new SetLabelTextDelegate(SetLabelText),new object[] {text});
}
ahora, en el Form2, deberemos modificar
Código:
Form1.LabelNombreUsuario.Text = "Pepito";
por lo siguiente:
Código:
Form1.SetLabelText("Pepito");
y ya funcionaría.
Más info en este
enlace
Espero que te sirva.