Controlar movimiento en tiempo real
Publicado por pablo (33 intervenciones) el 12/09/2022 16:31:33
Buenos dias
Tengo el siguiente codigo, para poder mover botones en tiempo real. Funciona genial, el problema es que se mueve todo, no solo los botones, sino tambien los textbox y paneles que estan en el form.
Les consulto si sabrian como mejorar este codigo para que solo se pueda mover los botones cuando le hacen clik o los mantienen presionados.
desde ya muchas gracias.
Public Movimiento As Boolean
Public _x, _y As Integer
Private Sub grbBotones_MouseDown(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles grbBotones.MouseDown
_x = e.X
_y = e.Y
If e.Button = MouseButtons.Left Then
Movimiento = True
End If
End Sub
Private Sub grbBotones_MouseMove(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles grbBotones.MouseMove
If Movimiento Then
CType(sender, Control).Left = e.X +
CType(sender, Control).Left - _x
CType(sender, Control).Top = e.Y +
CType(sender, Control).Top - _y
End If
End Sub
Private Sub grbBotones_MouseUp(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles grbBotones.MouseUp
Movimiento = False
End Sub
Public Sub AsignarEventos(ByVal _Controles As Control)
Dim Controles As Control
For Each Controles In _Controles.Controls
AddHandler Controles.MouseDown, AddressOf grbBotones_MouseDown
AddHandler Controles.MouseMove, AddressOf grbBotones_MouseMove
AddHandler Controles.MouseUp, AddressOf grbBotones_MouseUp
AsignarEventos(Controles)
Next
End Sub
Tengo el siguiente codigo, para poder mover botones en tiempo real. Funciona genial, el problema es que se mueve todo, no solo los botones, sino tambien los textbox y paneles que estan en el form.
Les consulto si sabrian como mejorar este codigo para que solo se pueda mover los botones cuando le hacen clik o los mantienen presionados.
desde ya muchas gracias.
Public Movimiento As Boolean
Public _x, _y As Integer
Private Sub grbBotones_MouseDown(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles grbBotones.MouseDown
_x = e.X
_y = e.Y
If e.Button = MouseButtons.Left Then
Movimiento = True
End If
End Sub
Private Sub grbBotones_MouseMove(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles grbBotones.MouseMove
If Movimiento Then
CType(sender, Control).Left = e.X +
CType(sender, Control).Left - _x
CType(sender, Control).Top = e.Y +
CType(sender, Control).Top - _y
End If
End Sub
Private Sub grbBotones_MouseUp(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles grbBotones.MouseUp
Movimiento = False
End Sub
Public Sub AsignarEventos(ByVal _Controles As Control)
Dim Controles As Control
For Each Controles In _Controles.Controls
AddHandler Controles.MouseDown, AddressOf grbBotones_MouseDown
AddHandler Controles.MouseMove, AddressOf grbBotones_MouseMove
AddHandler Controles.MouseUp, AddressOf grbBotones_MouseUp
AsignarEventos(Controles)
Next
End Sub
Valora esta pregunta


0