Во-первых, мы должны будем использовать Interop услуг с использованием пространства имен, как
using System.Runtime.InteropServices;
Следующая вещь будет определить сообщения, которые будут заботиться о перемещении формы. Мы будем иметь их как переменные класса
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();
и, наконец, мы будем писать код, чтобы отправить сообщение, когда пользователь нажимает кнопку мыши. Форма будет перемещена в соответствии с движением мыши, если пользователь удерживает нажатой кнопку мыши.
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
ReleaseCapture();
SendMessage(this.Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
}
См эту ссылку Dragable form
Кредиты для rahul-rajat-singh
Это работает для меня с FormBorderStyle, установленным в None. Это на сервере 2008, VS2008 с .NET 3.5. Какая версия .NET и ОС вы используете? –
@Michael McCloskey - я использую Windows 7 rc, vs2008 с .net 3.5. – Moon
@Michael McClosKey - неважно! он работает сейчас. Я не знаю, что произошло. – Moon