К сожалению, кажется, что не существует сверхбыстрого способа сделать это, но следующее - мое решение, и, по крайней мере, кажется, не основано на совпадениях.
В конструкторе mdi измените размер ручки:
this.ResizeEnd += delegate { this.Refresh(); };
И затем это переопределение для обработки событий максимизации / восстановления
protected override void WndProc(ref Message m)
{
if (m.Msg == Win32.WM_SYSCOMMAND)
{
int test = m.WParam.ToInt32() & 0xFFF0;
switch (test)
{
case Win32.SC_MAXIMIZE:
case Win32.SC_RESTORE:
this.Invalidate(); // used to keep background image centered
break;
}
}
base.WndProc(ref m);
}
Постоянные значения определяются как:
public const int WM_SYSCOMMAND = 0x0112;
//wparam for WM_SYSCOMMAND should be one of these after masking with 0xFFF0:
public const int SC_RESTORE = 0xF120;
public const int SC_MINIMIZE = 0xF020;
public const int SC_MAXIMIZE = 0xF030;