Hi Josef,
hier mal eine kleine Demo, wie man das machen kann. Den Code einfach in den
Codeteil eines leeres Formulars kopieren:
Public Class Form11
Private Sub Form11_Load(sender As System.Object, e As System.EventArgs)
Handles MyBase.Load
Me.KeyPreview = True
Dim pb1 As New PictureBox
pb1.Image = Image.FromFile("C:\Users\Public\Pictures\Sample
Pictures\tulips.jpg")
Me.Controls.Add(pb1)
mList.Add(pb1)
Dim pb2 As New PictureBox With {.Left = 100, .Top = 100}
pb2.Image = Image.FromFile("C:\Users\Public\Pictures\Sample
Pictures\tulips.jpg")
Me.Controls.Add(pb2)
mList.Add(pb2)
End Sub
Private mList As New List(Of PictureBox)
Private mOffsetX As Integer = 0
Private mOffsetY As Integer = 0
Private sw As Boolean = False
Private Sub Form1_MouseDown(sender As Object, e As
System.Windows.Forms.MouseEventArgs) Handles Me.MouseDown
mOffsetX = e.X
mOffsetY = e.Y
sw = True
End Sub
Private Sub Form1_MouseMove(sender As Object, e As
System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove
If sw Then
Dim minX = Aggregate e1 In mList Into Min(e1.Left + e.X - mOffsetX)
Dim maxX = Aggregate e1 In mList Into Max(e1.Left + e1.Width + e.X -
mOffsetX)
Dim minY = Aggregate e1 In mList Into Min(e1.Top + e.Y - mOffsetY)
Dim maxY = Aggregate e1 In mList Into Max(e1.Top + e1.Height + e.Y -
mOffsetY)
If minX >= 0 And maxX <= Me.ClientSize.Width And minY >= 0 And maxY <=
Me.ClientSize.Height Then
For Each pb As PictureBox In mList 'List(Of PictureBox)
pb.Left = pb.Left + e.X - mOffsetX
pb.Top = pb.Top + e.Y - mOffsetY
pb.BringToFront()
Next
End If
mOffsetX = e.X
mOffsetY = e.Y
End If
End Sub
Private Sub Form1_MouseUp(sender As Object, e As
System.Windows.Forms.MouseEventArgs) Handles Me.MouseUp
sw = False
End Sub
End Class
--
Viele Gruesse
Peter