Introduction
This is my first article and I hope my English is OK. Have you ever wanted to move a window without a Titlebar in C#? Well, then you're right here.
Let's start
First you have to add the following code in the header of your project. This is needed to load the required DLL's to our project. According to MSDN ReleaseCapture
: removes mouse capture from the object in the current document and SendMessage
: sends the specified message to a window or windows. It calls the window procedure for the specified window and does not return until the window procedure has processed the message.
using System.Runtime.InteropServices;
If you've done this, you can add the const
and the DLL functions:
public const int WM_NCLBUTTONDOWN = 0xA1;
public const int HT_CAPTION = 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();
Then put the following two lines of code in the form's MouseDown
event like this:
private void Form1_MouseDown(object sender,
System.Windows.Forms.MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
ReleaseCapture();
SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
}
}
Believe it or not - you've done it! Now run the App and try to move the form by clicking on the form and moving the mouse (you have to hold the button pressed!)
Hope you find it useful. Enjoy!
Thanks to Patric_J and John Wood for their replies! The code has been updated!