Данная ошибка возникает после изменения размера окна кнопкой "свернуть" или же изменения размеров окна до минимума по средством уменьшения самого окна программы после вызова дочерней формы. Я использую вот такую функцию для перехвата значений в самой операционной системе Windows.
private extern static void SendMessage(System.IntPtr hWnd, int wMsg, int wParam, int lParam);
protected override void WndProc(ref System.Windows.Forms.Message m)
{
const int SC_MINIMIZE = 0xF020;
const int SC_RESTORE = 0xF120;
const int WM_SYSCOMMAND = 0x0112;
if (m.Msg == WM_SYSCOMMAND)
{
int wParam = (m.WParam.ToInt32 () & 0xFFF0);
if (wParam == SC_MINIMIZE)
formSize = this.ClientSize;
if (wParam == SC_RESTORE)
this.Size = formSize;
}
base.WndProc(ref m);
}
Дополнительно использую функцию
public void AdjustForm()
{
switch (this.WindowState)
{
case FormWindowState.Maximized:
this.Padding = new Padding(8, 8, 8, 0);
break;
case FormWindowState.Normal:
if (this.Padding.Top != borderSide)
this.Padding = new Padding(borderSide);
break;
}
}
Далее на самой кнопке указываю:
private void SVERNUT_Click(object sender, EventArgs e)
{
this.WindowState = FormWindowState.Minimized;
}
Вот настройки дочерних форм
private void OpenWorkerPanel(Form childForm, object btnSender)
{
if (activeForm != null)
{
activeForm.Close();
}
ActivateButton(btnSender);
activeForm = childForm;
childForm.TopLevel = false;
childForm.FormBorderStyle = FormBorderStyle.None;
childForm.Dock = System.Windows.Forms.DockStyle.Fill;
this.WorkerPanel.Controls.Add(childForm);
childForm.BringToFront();
childForm.Show();
}
Вот функция вызывающая дочернюю форму
private void PrinterButton_Click(object sender, EventArgs e)
{
OpenWorkerPanel(new Forms.Form2Printer(), sender);
}
Если я убираю вот эту строчку : childForm.Dock = System.Windows.Forms.DockStyle.Fill; То кнопка свернуть и изменение размеров окна программы к ошибке не приводит.