Movendo um formulário sem barra de título
Criar um formulário sem barra de título é uma tarefa muito simples que se resume a setar a propriedade FormBorderStyle para None. Essa ação, no entanto, cria um problema já que não é mais possível mover o formulário pela via normal (clicando na barra de título e arrastando o formulário para a nova posição). Experimente testar, criando um formulário como o da imagem a seguir.
Para programar a capacidade de arrastar o formulário com o botão esquerdo do mouse, use o código a seguir:
Public Class Form1
' Declarações da API de Windows e de constantes relacionadas
Private Const WM_SYSCOMMAND As Integer = &H112&
Private Const MOUSE_MOVE As Integer = &HF012&
"user32.DLL", EntryPoint:="ReleaseCapture")> _
Private Shared Sub ReleaseCapture()
End Sub
"user32.DLL", EntryPoint:="SendMessage")> _
Private Shared Sub SendMessage( _
ByVal hWnd As System.IntPtr, ByVal wMsg As Integer, _
ByVal wParam As Integer, ByVal lParam As Integer)
End Sub
Private Sub moverForm()
ReleaseCapture()
SendMessage(Me.Handle, WM_SYSCOMMAND, MOUSE_MOVE, 0)
End Sub
Private Sub Form1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) _
Handles MyBase.MouseMove, Label1.MouseMove, Label2.MouseMove, Label3.MouseMove, btnFechar.MouseMove
If e.Button = MouseButtons.Left Then
moverForm()
End If
End Sub
Private Sub btnFechar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnFechar.Click
Me.Close()
End Sub
End Class
Repare no trecho em negrito. É necessário tratamento para o evento MouseMove de todos os controles do formulário para que você possa arrastar o form quando estiver com o ponteiro sobre cada um desses controles. Note também que incluímos um botão Fechar no form para permitir encerrar o exemplo.
Cláudio Ralha (claudioralha@hotmail.com)