Ver Mensaje Individual
  #3 (permalink)  
Antiguo 28/04/2012, 11:19
tienda
 
Fecha de Ingreso: diciembre-2011
Mensajes: 70
Antigüedad: 13 años, 3 meses
Puntos: 2
Respuesta: mover botones

pues pongo yo el aporte a quien le pueda servir

Cita:
Public Class Form1
Dim Moviendose As Boolean = False 'bandera que nos dirá si el user ya presiono el clic dentro del mouse... por lo tanto se iniciará el movimiento
Dim PrimeraMovida As Boolean = False 'Como el evento MouseMove se repite constantemente cada vez que detecta el movimiento del mouse, esta bandera nos dira si es la primera vez que se detecta el movimiento despues de presionar el mouse
Dim posicionInicialCursorX = 0 'contendrá la posicion del cursor en "X" exactamente despues de que se presiona el mouse y antes de que se comience a mover el mouse
Dim posicionInicialCursorY = 0 'contendrá la posicion del cursor en "Y" exactamente despues de que se presiona el mouse y antes de que se comience a mover el mouse

Private Sub btn_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles boton.MouseDown
Moviendose = True 'como se presiono el mouse, se iniciará el movimiento del boton
End Sub

Private Sub btn_MouseUp(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles boton.MouseUp
Moviendose = False 'como se soltó el mouse, se detendrá el movimiento del boton
PrimeraMovida = False 'reiniciamos la bandera
End Sub

Private Sub btn_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles boton.MouseMove
If (Moviendose = True) Then 'Sí se esta moviendo el mouse, entonces:
If (PrimeraMovida = False) Then 'Sí es la primera movida despues de presionar el mouse, entonces:
PrimeraMovida = True 'igualamos la bandera a true para que no vuelva a entrar aquí
posicionInicialCursorX = e.X 'obtenemos la posicion del cursor en X al inicarse el movimiento
posicionInicialCursorY = e.Y 'obtenemos la posicion del cursor en Y al inicarse el movimiento
End If

Me.Text = "Drag And Drop X=" & e.X + boton.Location.X - posicionInicialCursorX & " Y=" & e.Y + boton.Location.Y - posicionInicialCursorY 'Solo para darnos una idea de lo que sucede
boton.Location = New Point(e.X + boton.Location.X - posicionInicialCursorX, e.Y + boton.Location.Y - posicionInicialCursorY) 'reposisionamos el boton en las nuevas coordenadas
End If
End Sub
End Class