Está en la página 1de 4

NOTA: mas abajo lo explico paso a paso...

PLAIN TEXT VB.NET: 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.Window s.Forms.MouseEventArgs) Handles boton.MouseDown Moviendose = True el movimiento del boton End Sub 'como se presiono el mouse, se iniciar

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

'reiniciamos la bandera

Private Sub btn_MouseMove(ByVal sender As System.Object, ByVal e As System.Window s.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 a entrar aqu 'igualamos la bandera a true para que no vuelva

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 Y bueno, al correrlo te debera quedar algo como esto :

Ahora deja te lo explico brevemente (aunque el codigo esta totalmente comentado)... En teora, esto es lo que hacemos

Primero lo que sucede cuando uno desea arrastrar un boton, es colocarte sobre l y dar click, despes comienzas a mover el mouse. Bueno pues nosotros es lo que intentamos simular. Sabiendo esto, lo primero que necesitamos hacer es saber si el ususario ya ha presionado click dentro del boton. Esto, porque nuestro codigo solo iniciar a ejecutarse cuando el user presione click sobre el boton (ya que nuestro codigo estar en el evento "MouseMove" el cual es lanzado cuando el mouse se esta moviendo encima del boton, pero que tal si el usuario solo esta moviendo el mouse por encima de ste pero no desea arrastrarlo? para eso, hemos usado una bandera llamada "Moviendose" la cual nos indica si el usuario ya ha presionado click sobre el boton. S esta bandera es igual a "true" significa que el user ya ha presionado el boton, por lo tanto ejecutaremos nuestro codigo) Ahora lo primero que tenemos que hacer despues de que el usuario presion el boton, es obtener las coordenadas del puntero (cursor), ya veras para que. Estas coordenadas solo se obtendrn una vez por arrastre (es decir que se obtendrn solo al inicio de que se comienza a arrastrar el boton y no se volvern a obtener hasta que el usuario alla terminado de arrastrar el boton, soltar el click, y volver a presionar click sobre el boton). Para saber si es el inicio de la arrastrada del boton, usaremos una bandera llamada "PrimeraMovida". Bueno, teniendo en cuenta esto, ya solo nos queda estar reposicionando el boton dependiendo de la posicin nueva del cursor. Esto lo hacemos en el evento "MouseMove" para que cada vez que vb.net detecte que se esta moviendo el cursor encima del boton, cambiar las coordenadas del boton para que se coloque a una nueva posicion proporcional a la nueva posicin del cursor (provocando el efecto demovimiento del mouse a la par del cursor) Observa esta imgen y veras como hago el reposicionamiento del boton respecto del mouse.

Espero y todo te alla quedado claro cualquier cosa comentala aqu porfa jeje.. Aqu te dejo los archivos para que los descargues:

Read more: http://www.recursosdelweb.com/como-mover-un-boton-drag-and-drop-envisual-basic-net-vbnet/#ixzz1mGy3rlV5