2014-01-07 7 views
0

У меня есть следующий код:Как я могу заполнить DataGridView быстрее с #

private void copyCloneRowFromdgvCustomMainTodgvCustomSingleExtraction(int[] vect) 
    { 
     dgvCustomSingleExtraction.Rows.Clear(); 
     DataGridViewRow row = new DataGridViewRow(); 
     int i = 0; 
     dgvCustomSingleExtraction.ColumnCount = dgvCustomMain.ColumnCount; 
     for (; i < dgvCustomMain.ColumnCount; i++) 
      dgvCustomSingleExtraction.Columns[i].HeaderCell.Value = dgvCustomMain.Columns[i].HeaderCell.Value; 

     for (i = 0; i < vect.Length; i++) 
     { 
      int intColIndex = 0; 
      row = (DataGridViewRow)dgvCustomMain.Rows[vect[i]].Clone(); 
      foreach (DataGridViewCell cell in dgvCustomMain.Rows[vect[i]].Cells) 
      { 
       row.Cells[intColIndex].Value = cell.Value; 
       intColIndex++; 
      } 

      dgvCustomSingleExtraction.Rows.Add(row); 
     } 
    } 

С помощью этого метода я хочу создать новый DataGridView со случайными строками, которые в dgvCustomMain. Поэтому я использовал int[] vect, что это массив со случайным числом (от 0 до dgvCustomMain.Count - 1). Теперь, если массив мал, например, 1500 элементов, он принимает 188ms, если массив больше (например, 15000 элементов), он занимает около 1800 мс, и если он более крупный, как 150000 элементов, он занимает около 20 секунд. Теперь мой вопрос: как я могу заполнить datagridview быстрее?

EDIT

Я смотрю here, но я не понимаю, как его реализует. Кто-то может мне помочь?

ответ

1

Вы можете использовать виртуальный режим для повышения эффективности DataGridView

Смотрите здесь: link

Смежные вопросы