animfunnn
@animfunnn

System.ArgumentException: Parameter is not valid. Вопрос связан с размером окна приложения и ошибкой при его изменении. Как решить?

Данная ошибка возникает после изменения размера окна кнопкой "свернуть" или же изменения размеров окна до минимума по средством уменьшения самого окна программы после вызова дочерней формы. Я использую вот такую функцию для перехвата значений в самой операционной системе 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; То кнопка свернуть и изменение размеров окна программы к ошибке не приводит.
  • Вопрос задан
  • 119 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы