Hallo zusammen,
ich versuche verzweifelt es hinzubekommen das ich auf einer Form mehrer Panels habe und diese frei Positionieren kann.
Dies gelingt soweit auh doch nun will ich verhindern das die Panels aufeinander geschoben werden können.
Unten seht ihr ein Code der dies soweit auch macht aber nicht sauber genug.
Kann mir jemand sagen was ich falsch mache?
Dim nStartPos As Point
Dim nDragPos As Point
Private Sub Panel1_MouseDown(sender As Object, e As _
System.Windows.Forms.MouseEventArgs) Handles Panel1.MouseDown
If e.Button = Windows.Forms.MouseButtons.Left Then
nStartPos = Panel1.Location
nDragPos = Panel1.PointToScreen(New Point(e.X, e.Y))
End If
End Sub
Private Sub Panel1_MouseMove(sender As Object, e As _
System.Windows.Forms.MouseEventArgs) Handles Panel1.MouseMove
If e.Button = Windows.Forms.MouseButtons.Left Then
Dim nCurPos As Point = Panel1.PointToScreen(New Point(e.X, e.Y))
Dim NewPos As New Point(nStartPos.X + nCurPos.X - nDragPos.X, _
nStartPos.Y + nCurPos.Y - nDragPos.Y)
Dim r As Rectangle = Panel1.Bounds
r.X = NewPos.X + 5
r.Y = NewPos.Y + 5
If r.IntersectsWith(Panel2.Bounds) Then Return
'ist ja nur für den Form Rand gedacht damit es nicht drüber raus
' gezogen werden kann
If NewPos.X < 1 Then NewPos.X = 1
If NewPos.X > 599 Then NewPos.X = 599
If NewPos.Y < 1 Then NewPos.Y = 1
If NewPos.Y > 367 Then NewPos.Y = 367
Panel1.Location = NewPos
End If
End Sub
ich versuche verzweifelt es hinzubekommen das ich auf einer Form mehrer Panels habe und diese frei Positionieren kann.
Dies gelingt soweit auh doch nun will ich verhindern das die Panels aufeinander geschoben werden können.
Unten seht ihr ein Code der dies soweit auch macht aber nicht sauber genug.
Kann mir jemand sagen was ich falsch mache?
Dim nStartPos As Point
Dim nDragPos As Point
Private Sub Panel1_MouseDown(sender As Object, e As _
System.Windows.Forms.MouseEventArgs) Handles Panel1.MouseDown
If e.Button = Windows.Forms.MouseButtons.Left Then
nStartPos = Panel1.Location
nDragPos = Panel1.PointToScreen(New Point(e.X, e.Y))
End If
End Sub
Private Sub Panel1_MouseMove(sender As Object, e As _
System.Windows.Forms.MouseEventArgs) Handles Panel1.MouseMove
If e.Button = Windows.Forms.MouseButtons.Left Then
Dim nCurPos As Point = Panel1.PointToScreen(New Point(e.X, e.Y))
Dim NewPos As New Point(nStartPos.X + nCurPos.X - nDragPos.X, _
nStartPos.Y + nCurPos.Y - nDragPos.Y)
Dim r As Rectangle = Panel1.Bounds
r.X = NewPos.X + 5
r.Y = NewPos.Y + 5
If r.IntersectsWith(Panel2.Bounds) Then Return
'ist ja nur für den Form Rand gedacht damit es nicht drüber raus
' gezogen werden kann
If NewPos.X < 1 Then NewPos.X = 1
If NewPos.X > 599 Then NewPos.X = 599
If NewPos.Y < 1 Then NewPos.Y = 1
If NewPos.Y > 367 Then NewPos.Y = 367
Panel1.Location = NewPos
End If
End Sub