Live Chat Icon For mobile
Live Chat Icon

How can I drag a window if it doesn’t have a title bar or border

Platform: WinForms| Category: Mouse Handling

You can drag such a window by using Win32 APIs to switch the mouse hit to WM_NCLBUTTONDOWN. The code below will allow you to drag by mousing down anywhere in the form’s clientarea as long as you don’t hit a child control on the form.

	using System.Runtime.InteropServices;
	............
	public const int WM_NCLBUTTONDOWN = 0xA1; 
 	public const int HTCAPTION = 0x2; 
 
 	[DllImportAttribute ('user32.dll')] 
 	public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam); 
 
	[DllImportAttribute ('user32.dll')] 
	public static extern bool ReleaseCapture(); 

	private void Form2_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
	{
		ReleaseCapture();
		SendMessage(Handle, WM_NCLBUTTONDOWN, HTCAPTION, 0);
	}

Here is a solution posed by Jacob Grass (Abiliti Solutions) that does not rely on InteropServices.

	Private blnMoving As Boolean = False
	Private MouseDownX As Integer
	Private MouseDownY As Integer
 
	Private Sub Form1_MouseDown(ByVal sender As Object, _
    			ByVal e As System.Windows.Forms.MouseEventArgs) Handles Form1.MouseDown
    		If e.Button = MouseButtons.Left Then
			blnMoving = True
			MouseDownX = e.X
			MouseDownY = e.Y
		End If
	End Sub
 
	Private Sub Form1_MouseUp(ByVal sender As Object, _
			ByVal e As System.Windows.Forms.MouseEventArgs) Handles Form1.MouseUp
		If e.Button = MouseButtons.Left Then
			blnMoving = False
		End If
	End Sub
 
	Private Sub Form1_MouseMove(ByVal sender As Object, _
			ByVal e As System.Windows.Forms.MouseEventArgs) Handles Form1.MouseMove
		If blnMoving Then
			Dim temp As Point = New Point()
 
			temp.X = Form1.Location.X + (e.X - MouseDownX)
			temp.Y = Form1.Location.Y + (e.Y - MouseDownY)
			Form1.Location = temp
		End If
	End Sub

Share with

Share on twitter
Share on facebook
Share on linkedin

Related FAQs

Couldn't find the FAQs you're looking for?

Please submit your question and answer.