Option Strict On
' Colocar un Panel en el Form
' Copiar este codigo y mover el Form y el Panel desde cualquier punto
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Panel1.BorderStyle = BorderStyle.FixedSingle
End Sub
WithEvents MV As New MUEVE
Private Sub Me_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseDown, Panel1.MouseDown
Dim CTRL As Control = CType(sender, Control)
MV.Mueve_MouseDown(CTRL, e)
End Sub
Private Sub Me_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove, Panel1.MouseMove
Dim CTRL As Control = CType(sender, Control)
MV.Mueve_MouseMove(CTRL, e)
End Sub
Private Sub Me_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseUp, Panel1.MouseUp
Dim CTRL As Control = CType(sender, Control)
MV.Mueve_MouseUp(CTRL, e)
End Sub
End Class
Friend Class MUEVE
Dim Xobj As Single, Yobj As Single
Dim Xfrm As Single, Yfrm As Single
Dim SNR As Control
Dim TM As Boolean = False
Sub Mueve_MouseDown(sender As Object, e As MouseEventArgs)
Dim CTRL As Control = CType(sender, Control)
If e.Button = MouseButtons.Left Then
CTRL.BringToFront()
Xobj = e.X
Yobj = e.Y
TM = True
Application.DoEvents()
End If
End Sub
Sub Mueve_MouseMove(sender As Object, e As MouseEventArgs)
Dim CTRL As Control = CType(sender, Control)
If e.Button = MouseButtons.Left Then
If TM = True Then
Xfrm = e.X + CTRL.Left
Yfrm = e.Y + CTRL.Top
CTRL.Left = CInt(Xfrm - Xobj)
CTRL.Top = CInt(Yfrm - Yobj)
Application.DoEvents()
End If
End If
End Sub
Sub Mueve_MouseUp(sender As Object, e As MouseEventArgs)
If e.Button = MouseButtons.Left Then
TM = False
Application.DoEvents()
End If
End Sub
End Class