Bei diesem Code ist es kein Wunder, dass es flackert, da die Form ständig bei jeder kleinsten Mausbewegung komplett neu gezeichnet wird.
Du hast nun 2 Möglichkeiten:
Lege den Code aus dem MouseMove-Ereignis ins MouseUp-Ereignis, so dass nur einmal gezeichnet wird oder mach' es gleich richtig mit den nötigen APIs:
Code:
public const int WM_NCLBUTTONDOWN = 0xA1;
public const int HT_CAPTION = 0x2;
[System.Runtime.InteropServices.DllImport("user32.dll")]
public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
[System.Runtime.InteropServices.DllImport("user32.dll")]
public static extern bool ReleaseCapture();
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
ReleaseCapture();
SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
}
}