C# Перетаскивание формы за любой элемент. ( FormBorderStyle: None )

1,00
р.
Здравствуйте, довольно давно использую несколько методов, приведу код ниже. Возможно есть более гуманное решение этой задачи, поделитесь кодом.
[DllImport("user32", CharSet = CharSet.Auto)] internal extern static bool PostMessage(IntPtr hWnd, uint Msg, uint WParam, uint LParam)
[DllImport("user32", CharSet = CharSet.Auto)] internal extern static bool ReleaseCapture()
const uint WM_SYSCOMMAND = 0x0112 const uint DOMOVE = 0xF012 const uint DOSIZE = 0xF008
А в событие MouseDown элемента управления вставляем сл. код.
ReleaseCapture() PostMessage(this.Handle, WM_SYSCOMMAND, DOMOVE, 0)
Данный вариант работает отлично, без зависаний, и мерцаний, возможно есть лучше решение?

Ответ
private void Form1_MouseDown(object sender, MouseEventArgs e) { base.Capture = false Message m = Message.Create(base.Handle, 0xa1, new IntPtr(2), IntPtr.Zero) this.WndProc(ref m) }