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.

Johannes
 

Click Here to Leave a Comment Below 0 comments