Eine klassische Windows Form kann natürlich mit der gedrückten Maustaste verschoben werden. Das ist ganz normal und kennt jemand. Jedoch gibt es auch Windows Forms, die keinen Rand besitzen. Doch mit einem VB.NET Code ist auch hier das Verschieben der Form möglich.
In VB.NET wird hier mit der Position des Mauszeigers gearbeitet und die neue Position der Form berechnet.
Form ohne Rand verschieben mit VB.NET
Um eine Windows Form ohne Rand verschieben zu können, muss die neue Position anhand der Maus-Position berechnet werden. Behilflich sind hier die Events .MouseDown und .MouseMove.
' FORM VERSCHIEBEN
Private MausLocation As Point
' PANEL
Private Sub PanelTop_MouseDown(sender As Object, e As MouseEventArgs) Handles PanelTop.MouseDown
If e.Button = Windows.Forms.MouseButtons.Left Then
MausLocation = e.Location
End If
End Sub
Private Sub PanelTop_MouseMove(sender As Object, e As MouseEventArgs) Handles PanelTop.MouseMove
If e.Button = Windows.Forms.MouseButtons.Left Then
Me.Location = e.Location - MausLocation + Me.Location
End If
End Sub
' PICTURE BOX
Private Sub pbItnator_MouseDown(sender As Object, e As MouseEventArgs) Handles pbItnator.MouseDown
If e.Button = Windows.Forms.MouseButtons.Left Then
MausLocation = e.Location
End If
End Sub
Private Sub pbItnator_MouseMove(sender As Object, e As MouseEventArgs) Handles pbItnator.MouseMove
If e.Button = Windows.Forms.MouseButtons.Left Then
Me.Location = e.Location - MausLocation + Me.Location
End If
End Sub
Wenn man nun auf das Panel klickt und die Maus bewegt, werden die neuen Positionen berechnet und die Windows Form verschoben. Als “Rand” wird in diesem VB.NET Beispiel ein Panel verwendet, allerdings können natürlich auch andere Elemente verwendet werden.
