La Web del Programador: Comunidad de Programadores
 
    Pregunta:  65785 - MOVER UN LABEL EN C#
Autor:  Joel Heredia
Hola soy nuevo programando en c#, recientemente estoy haciendo una aplicación para realizar el movimiento de un label usando hilos (threads), creo el label y todo va bien hasta que creo el metodo de mover la imagen, para que se ejecute en el hilo, todo va bien entra correctamente a la función (lo revise paso a paso para ver si entraba y cambiaba los valores, cosa la cual hace), pero la imagen no se mueve, esperaba que alguien pudiese ayudarme, de antemano muchas gracias.

  Respuesta:  engell mejia
si a lo que te refieres es a cambiar la posición del label en tiempo de ejecución prueba con lo siguiente:

label1.Location = new System.Drawing.Point(coordenada_X, coordenada_Y);

si estas trabajando con hilos necesitas utilizar delegados para habilitar llamadas asincronas para cada propiedad del label para que este pueda ser accedido de manera segura desde el hilo.

ejemplo:

public void nueva_posicion(Control label1)
{
if (label1.InvokeRequired)
{
SetValueDelegate delegado = new SetValueDelegate(nueva_posicion);
label1.Invoke(delegado, new object[] { label1 });
}
else
label1.Location = new System.Drawing.Point(coordenada_X, coordenada_Y);
}

ahora dentro de tu funcion ("la que ejecutas desde el nuevo hilo"), pon lo siguiente:

nueva_posicion( label1 );

NOTA: declara las variables "coordenada_X" , "coordenada_Y" de forma global y modifica sus valores a los que tu desees antes de llamar a la función nueva_posicion( );, para q sean estos los que se tomen en cuenta a la hora de reubicar el label.

Saludos...