Как изменять содержимое формы при максимизации без мерцаний? C# Windows Forms

Здравствуйте. В программе появилась необходимость увеличивать шрифт при максимизации окна и уменьшать при минимизации. Я вызвал событие Resize(возникает при изменении размера формы) и проверил в нём WindowState. Но проблема в том, что при каждом растяжении формы пользователем проходит эта проверка, и это вызывает мерцание формы. Подскажите как можно это по другому реализовать, событие при изменении WindowState я не нашёл.

Вы можете включить двойную буферизацию для форм Windows и элементах управления Windows, задав DoubleBuffered свойства true

Есть веселая функция WinAPI - LockWindowUpdate.

https://docs.microsoft.com/...ndowupdate

Делаем примерно так:

[System.Runtime.InteropServices.DllImport("user32.dll")]
static extern bool LockWindowUpdate(IntPtr hWndLock);

private void DoResize()
{
LockWindowUpdate(Handle);
try
{
//Do your stuff here
}
finally
{
LockWindowUpdate(0);
}
}

Как вариант, можно использовать https://docs.microsoft.com/...work-4.7.2 - оно вызывается только один раз, когда изменение размера формы уже закончено, поэтому мерцания быть не должно.

Добавить комментарий