Ver Mensaje Individual
  #3 (permalink)  
Antiguo 27/08/2010, 12:33
lmalvarez
 
Fecha de Ingreso: julio-2009
Mensajes: 82
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: problema con hilos de ejecución

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.