Переопределите WndProc в вашей форме, прослушайте сообщения и сверните.
Добавьте этот код в вашу форму:
private const int WM_SYSCOMMAND = 0x0112;
private const int SC_MINIMIZE = 0xf020;
protected override void WndProc(ref Message m)
{
if (m.Msg == WM_SYSCOMMAND)
{
if (m.WParam.ToInt32() == SC_MINIMIZE)
{
m.Result = IntPtr.Zero;
return;
}
}
base.WndProc(ref m);
}
Я изменил Код Роба находится в этой теме SO:
Как отключить кнопку свертывания в C #?
Работает отлично: нет мерцания, нет ничего, когда пользователь пытается свернуть.