Мой код выглядит следующим образом:
private void dataGridView4_CellValueNeeded(object sender, DataGridViewCellValueEventArgs e)
{
Records recordsTmp = null;
recordsTmp = (Records)this.ArrayOfRecords[e.RowIndex]; //ArrayList with string[] objects inside
switch (dataGridView4.Columns[e.ColumnIndex].HeaderText)
{
case "#":
e.Value = recordsTmp.nr;
break;
case "ip":
e.Value = recordsTmp.Ip;
break;
case "long":
e.Value = recordsTmp.Long;
break;
case "3":
e.Value = recordsTmp.type;
break;
case "4":
e.Value = recordsTmp.time;
break;
}
ArrayOfRecords
обновляется с 10-100 новыми string[]
объектами в секунду.
VirtualMode
имеет значение true.
SelectionMode
установлен на FullRowSelect
.
dataGridView
только для чтения.
Теперь есть также ProgressBar
со стилем Marquee
, который показывает мне, что с помощью, скажем, прокрутки строк 5000+ замораживает Form
, но я полагаю, это просто вопрос работы с потоками / помощником по фону и т.д.
Больше всего меня пугает отбор. Имея 8000 строк и щелкнув по последней (8000), моей форме потребуется 4,2 секунды, чтобы выбрать ее. И это следующим образом:
4000 строк составляет 2,1 секунды и т. Д. Если выбран 8000-й ряд, минимизация, а затем максимизация занимает 4,2 секунды. Выбор строки 1 снова «радует». Это неприемлемо. * Почему так трудно "пометить" 8000-ую строку для моего Form
?
Нумерация страниц VirtualMode работает отлично, но выбор - это боль.
Theres также другая проблема / поведение:
Почему событие CellValueNeeded
возникает, когда я перемещаю мышь по строкам? Они уже нарисованы? Так зачем тратить ресурсы?
Есть ли решение этой проблемы выбора? Или я должен ограничить максимальное количество записей в сетке данных