I found some of this code and edited to use easly.
Code:
'Using
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
MakeItMovable(Button1)
End Sub
Source Code
Code:
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
MakeItMovable(Button1)
MakeItMovable(TextBox1)
MakeItMovable(ListBox1)
MakeItMovable(Panel1)
MakeItMovable(CheckBox1)
MakeItMovable(ComboBox1)
MakeItMovable(TrackBar1)
End Sub
#Region " FormObjectMovement"
#Region " Const"
Dim startx As Integer
Dim starty As Integer
Dim endy As Integer
Dim endx As Integer
Dim finalx As Integer
Dim finaly As Integer
Dim mdown As Boolean
Dim valx As Boolean
Dim valy As Boolean
#End Region
Sub MakeItMovable(ByVal Obj As Button)
AddHandler Obj.MouseDown, AddressOf MouseDownSub
AddHandler Obj.MouseMove, AddressOf MouseMoveSub
AddHandler Obj.MouseUp, AddressOf MouseUpSub
End Sub
Sub MakeItMovable(ByVal Obj As TextBox)
AddHandler Obj.MouseDown, AddressOf MouseDownSub
AddHandler Obj.MouseMove, AddressOf MouseMoveSub
AddHandler Obj.MouseUp, AddressOf MouseUpSub
End Sub
Sub MakeItMovable(ByVal Obj As ListBox)
AddHandler Obj.MouseDown, AddressOf MouseDownSub
AddHandler Obj.MouseMove, AddressOf MouseMoveSub
AddHandler Obj.MouseUp, AddressOf MouseUpSub
End Sub
Sub MakeItMovable(ByVal Obj As Panel)
AddHandler Obj.MouseDown, AddressOf MouseDownSub
AddHandler Obj.MouseMove, AddressOf MouseMoveSub
AddHandler Obj.MouseUp, AddressOf MouseUpSub
End Sub
Sub MakeItMovable(ByVal Obj As CheckBox)
AddHandler Obj.MouseDown, AddressOf MouseDownSub
AddHandler Obj.MouseMove, AddressOf MouseMoveSub
AddHandler Obj.MouseUp, AddressOf MouseUpSub
End Sub
Sub MakeItMovable(ByVal Obj As ComboBox)
AddHandler Obj.MouseDown, AddressOf MouseDownSub
AddHandler Obj.MouseMove, AddressOf MouseMoveSub
AddHandler Obj.MouseUp, AddressOf MouseUpSub
End Sub
Sub MakeItMovable(ByVal Obj As TrackBar)
AddHandler Obj.MouseDown, AddressOf MouseDownSub
AddHandler Obj.MouseMove, AddressOf MouseMoveSub
AddHandler Obj.MouseUp, AddressOf MouseUpSub
End Sub
Private Sub MouseDownSub(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
startx = MousePosition.X
starty = MousePosition.Y
mdown = True
valx = False
valy = False
End Sub
Private Sub MouseMoveSub(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
'Check if mouse=down
If mdown = True Then
endx = (MousePosition.X - Me.Left)
endy = (MousePosition.Y - Me.Top)
If valy = False Then
starty = endy - sender.top
valy = True
End If
If valx = False Then
startx = endx - sender.left
valx = True
End If
sender.left = endx - startx
sender.top = endy - starty
End If
End Sub
Private Sub MouseUpSub(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
mdown = False
valx = False
valy = False
End Sub
#End Region
End Class
but why not just
(ByVal obj as Control) thus no need to create a bunch of overloads
Originally Posted by Sazor98
but why not just
(ByVal obj as Control) thus no need to create a bunch of overloads
Yeah, thanks much more clean now.
Updated Code
Code:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim Items() As Control = {Button1, TextBox1, ListBox1, Panel1, CheckBox1, ComboBox1, TrackBar1}
MakeItMovable(Items)
End Sub
Sub MakeItMovable(ByVal Obj() As Control)
Dim x = 0
Do Until x > Obj.Length - 1
AddHandler Obj(x).MouseDown, AddressOf MouseDownSub
AddHandler Obj(x).MouseMove, AddressOf MouseMoveSub
AddHandler Obj(x).MouseUp, AddressOf MouseUpSub
x += 1
Loop
End Sub