Поток в программной форме - C#

Узнай цену своей работы

Формулировка задачи:

Есть такая ситуация: Есть 1 форма, из неё открываем другую, там вводим числа. На кнопке есть обработчик события (вторая форма кстати создана программно). В этом событии создаётся progressbar и помещается на вторую форму, далее происходят вычисления и на основе их заполняется picturebox из первой формы. Вторая форма закрывается. По крайней мере так должно было быть. Но так происходит только при отладке программы в пошаговом режиме. И то если правильно расставить точки остановки. А при обычной работе всего этого picturebox не изменяется. Вот код обработчика кнопки второй формы: FormAsk - вторая форма paintLabyrint - заполняет pictureBox
ProgressBar pb = new ProgressBar();
            pb.Parent = FormAsk;
            pb.Bounds = new Rectangle((this.Width - 287) / 2, (this.Height - 33) / 2, 287, 33);
            n = Convert.ToInt32(TBox1.Text);
            m = Convert.ToInt32(TBox2.Text); 
            Thread create = new Thread(delegate()
            {
                if (FormAsk.IsHandleCreated)
                {   
                    if (pb.InvokeRequired)
                        pb.Invoke((CustomDelegate)delegate()
                        {
                            pb.Visible = true;
                            pb.Value = 0;
                            //progressBar1.Minimum = 0;
                            pb.Maximum = 4 * m * n;
                        });
                    else
                    {
                        pb.Visible = true;
                        pb.Value = 0;
                        // progressBar1.Minimum = 0;
                        pb.Maximum = 4 * m * n;
                    }
                }
                else
                    MessageBox.Show("Это не хорошо");
                labyrint = new int[n + 1, m + 1, 3];
                for (int i = 0; i < n; i++)
                    for (int j = 0; j < m; j++)
                        for (int k = 0; k < 3; k++)
                        {
                            if (k == 0)
                                labyrint[i, j, k] = 0;
                            else
                                labyrint[i, j, k] = 1;
                            if (pb.InvokeRequired)
                                pb.Invoke((CustomDelegate)delegate() { pb.Value++; });
                            else
                                pb.Value++;
                        }
                for (int i = 0; i < n; i++)
                    for (int j = 0; j < m; j++)
                    {
                        if (i == 0 && j == 0)
                        {
                            labyrint[i, j, 0] = 1;
                            entersetted = true;
                        }
                        if (i == 0 && j == m - 1)
                        {
                            labyrint[i, j, 0] = 2;
                            exitsetted = true;
                        }
                        if (i == 0)
                            labyrint[i, j, 2] = 0;
                        if (j == 0)
                            labyrint[i, j, 1] = 0;
                        if (i == n - 1)
                            labyrint[i + 1, j, 2] = 0;
                        if (j == m - 1)
                            labyrint[i, j + 1, 1] = 0;
                        if (pb.InvokeRequired)
                            pb.Invoke((CustomDelegate)delegate() { pb.Value++; });
                        else
                            pb.Value++;
                    }
                if (pictureBox1.InvokeRequired)
                {
                    pictureBox1.Invoke((CustomDelegate)delegate() { paintLabyrint(false); });
                }
                else
                    paintLabyrint(false);
            });
            create.Start();
            FormAsk.Close();
        }

Решение задачи: «Поток в программной форме»

textual
Листинг программы
(e.Argument as Form).Close();

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.222 из 5
Похожие ответы