En primer lugar vamos a tener que utilizar los servicios de interoperabilidad utilizando el espacio de nombres que
using System.Runtime.InteropServices;
Lo siguiente sería definir los mensajes que se encargará de mover el formulario. Tendremos estos como variables miembro de clase
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();
y, finalmente, vamos a escribir el código para enviar el mensaje cada vez que el usuario pulsa el botón del ratón. El formulario se volverá a colocar según el movimiento del mouse si el usuario mantiene presionado el botón del mouse.
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
ReleaseCapture();
SendMessage(this.Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
}
Consulte este enlace Dragable form
Créditos a rahul-rajat-singh
Funciona para mí con FormBorderStyle establecido en Ninguno. Esto es en Server 2008, VS2008 con .NET 3.5. ¿En qué versión de .NET y sistema operativo estás? –
@Michael McCloskey - Estoy usando Windows 7 rc, vs2008 con .net 3.5. – Moon
@Michael McClosKey - ¡no importa! ahora funciona. No sé lo que pasó. – Moon