Медленное заполнение DataGridView - C#

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

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

Возникла проблема с заполнением. У меня есть dgv размером 80х255 Изначально нужно заполнить это счастье нулями, а потом изменить значение произвольной ячейки в каждой строке на 1 или -1. Нулями заполняет, однако долго. Я поставил dataGridView1.Update(); чтобы увидеть процесс заполнения, оказалось что на заполнение строки в 80 ячеек уходит около 1 секунды. Итого на заполнение 255 строк затрачивается около 3 минут.. Нельзя ли как-то ускорить этот процесс?
private void button1_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < 80; i++)
                dataGridView1.Columns.Add("A" + Convert.ToString(i + 1), "A" + Convert.ToString(i + 1));
            dataGridView1.Rows.Add(255);
            for (int j = 0; j < 255; j++)
                dataGridView1.Rows[j].HeaderCell.Value = "X" + Convert.ToString(j + 1);
            /*
            
             */
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            for (int j = 0; j < dataGridView1.RowCount; j++)
                for (int i = 0; i < dataGridView1.ColumnCount; i++)
                {
                    dataGridView1[i,j].Value = 0;
                    dataGridView1.Update();
                }
        }
 
        private void button3_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < dataGridView1.RowCount; i++)
            {
                while (val == 0) ;
                val = rand.Next(-1, 1);
                dataGridView1[i, rand.Next(0, 80)].Value = val;
                dataGridView1.Update();
            }
        }

Решение задачи: «Медленное заполнение DataGridView»

textual
Листинг программы
            var global_start = DateTime.Now;
            for (int j = 0; j < dataGridView1.RowCount; j++)
                for (int i = 0; i < dataGridView1.ColumnCount; i++)
                {
                    dataGridView1[i,j].Value = 0;
                }
                var global_end =  DateTime.Now;
                var res= global_end - global_start;
                dataGridView1.Update();

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


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

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

15   голосов , оценка 3.933 из 5