Ferramentas de Usuário

Ferramentas de Site


dev_net:vb.net:snippet:mover_janela

Mover janela através de um Panel

Imagine-se que não se pretende ter a 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

Créditos a thoga31.

dev_net/vb.net/snippet/mover_janela.txt · Última modificação em: 2018/05/14 21:37 (edição externa)