Ir para o conteúdo

Mover janela através de um Panel

Imagine-se que não se pretende ter a janela típica do Windows. Criamos os nossos próprios botões de fechar, minimizar, maximizar, ajuda e outros que queiramos. Contudo, falta mover a janela quando está em modo diminuído. E não queremos que o utilizador se veja com a janela "presa" num certo sítio do ecrã. Devemos dar-lhe a justa oportunidade de localizar a janela do programa onde bem entender.

Podemos então criar uma zona específica onde o utilizador possa arrastar a janela através de, por exemplo, um Panel na zona dos botões e ao longo do comprimento da janela. Agora queremos que este panel faça mover a janela. Daremos ao panel o nome de "Header".

Dim newpoint As New System.Drawing.Point
Dim mouseX, mouseY As Integer


Private Sub Header_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Header.MouseDown
    mouseX = Control.MousePosition.X - Me.Location.X
    mouseY = Control.MousePosition.Y - Me.Location.Y
End Sub

Private Sub Header_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Header.MouseMove
    If e.Button = MouseButtons.Left Then
        newpoint = Control.MousePosition
        newpoint.X -= mouseX
        newpoint.Y -= mouseY
        Me.Location = newpoint
    End If
End Sub