VB.NET: Form ohne Rand verschieben
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.