Я пытаюсь добавить очень большое количество столбцов в datagridview, и у меня возникла сложная проблема. Когда количество столбцов становится слишком большим, код ниже добавляет столбцы очень медленно. Это зависит от значения size
- когда оно меньше 10000, я получаю более или менее хороший результат (2-4 секунды, чтобы добавить это количество столбцов), но когда размер увеличивается до 15000 или более, время добавления не является пропорциональным вообще, для 30000 столбцов он может достигать 2 минут вместо 20-30 секунд, как я ожидаю. Итак, мой вопрос - можно ли как-то оптимизировать эту процедуру?Добавить тысячи столбцов в datagridview
datagridview.SuspendLayout();
int size = 10000;
var columns = new DataGridViewColumn[size];
for (int i = 0; i < size; i++)
{
columns[i] = new DataGridViewTextBoxColumn();
columns[i].Name = "col" + i;
columns[i].HeaderText = "col" + i;
columns[i].FillWeight = 0.00001f;
}
datagridview.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
Array.ForEach(columns, item => datagridview.Columns.Add(item));
datagridview.ResumeLayout();
И это то, что я сделал:
int visibleColumns = 20;
string[] headers;
DataGridViewColumn[] columns;
HScrollBar hbar = new HScrollBar();
public Constructor(){
...
int sizeDezired = 15000;
int size = Math.Min(sizeDezired, visibleColumns);
columns = new DataGridViewColumn[size];
headers = new string[sizeDezired];
for (int i = 0; i < size; i++)
{
columns[i] = new DataGridViewTextBoxColumn();
columns[i].Name = "col" + i;
columns[i].HeaderText = "col" + i;
columns[i].FillWeight = 0.00001f;
}
for (int i = 0; i < sizeDezired;i++)
{
headers[i] = "col" + i;
}
if (sizeDezired > size)
{
hbar.Maximum = sizeDezired - size;
hbar.Minimum = 0;
hbar.Value = 0;
}
hbar.Scroll += hbar_Scroll;
...
}
void hbar_Scroll(object sender, ScrollEventArgs e)
{
for (int i = 0; i < datagridview.ColumnCount; i++)
{
datagridview.Columns[i].HeaderText = headers[i + e.NewValue];
}
}
Пожалуйста, не прикрепите свои заголовки к «C#» и тому подобное. Для этого нужны теги. –
Каково ваше использование памяти в этот период? – starskythehutch
Добавить меньше столбцов? –