Mover un objeto en tiempo de ejecucion

15/12/2004 - 12:56 por Waldo | Informe spam
Hola, quiero mover un control (un picturebox) en tiempo de ejecucion y
resulta que cuando ya movi el mouse con el boton izquierdo presionado
comienza moverse aleatoriamente , aun cuando dejo el mouse quieto (siempre
con el boton izquierdo presionado claro).

Mas abajo adjunto el codigo.

Si se les ocurre algo o ya se han encontrado con esta situación, muchas
gracias.

Waldo.-

private System.Drawing.PointF punto = new System.Drawing.Point(0,0);

private void pb_MouseDown(object sender, System.Windows.Forms.MouseEventArgs
e)
{
if (e.Button == MouseButtons.Left)
{
punto.X = e.X - ((PictureBox)sender).Location.X;
punto.Y = e.Y - ((PictureBox)sender).Location.Y;
}
}

private void pb_MouseMove(object sender, System.Windows.Forms.MouseEventArgs
e)
{
// Left , Middle, None , Right
if (e.Button == MouseButtons.Left)
{
((PictureBox)sender).Location = new Point(e.X+(int)punto.X,
e.Y+(int)punto.Y);
Update();
}
}

Preguntas similare

Leer las respuestas

#1 Maycol Alvarez
18/12/2004 - 21:21 | Informe spam
usa en la clase del form una varinable Booleana:

private bool press = false;

y crea 2 rutinas para controlar los eventos MouseDown y MouseUp, en
MouseDown establece press a true y en mouseup a false y en la rutina que
controla el evento mouseMove coloca tu código dentro de la condición:

if (press) {

}

¡¡¡y listo!!!
Respuesta Responder a este mensaje
#2 Waldo
20/12/2004 - 13:16 | Informe spam
Muchas gracias por tu contestacion, pero el problema era entre otras cosas
la posición que guardo al presionar el boton izquierdo del mouse, y el nuevo
valor que le asignaba en el evento mover mouse, a continuación pongo el
código que sirve por si alguien necesita algo parecido.

Punto es de tipo PointF.

Al presionar el mouse:
if (e.Button == System.Windows.Forms.MouseButtons.Left)
{
punto.X = e.X;
punto.Y = e.Y;
mover = true;
}

Al mover el mouse
if ((e.Button == System.Windows.Forms.MouseButtons.Left) & (mover))
{
mover = false;
Location = new Point(Location.X+e.X-(int)punto.X,
Location.Y+e.Y-(int)punto.Y);
mover = true;
}


"Maycol Alvarez" escribió en el
mensaje news:
usa en la clase del form una varinable Booleana:

private bool press = false;

y crea 2 rutinas para controlar los eventos MouseDown y MouseUp, en
MouseDown establece press a true y en mouseup a false y en la rutina que
controla el evento mouseMove coloca tu código dentro de la condición:

if (press) {

}

¡¡¡y listo!!!
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida