我的代码如下所示:
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
string[]
每秒更新 10-100 个新对象。VirtualMode
设置为真。SelectionMode
设置为FullRowSelect
。dataGridView
是只读的。
现在还有一个ProgressBar
withMarquee
样式,它告诉我说 5000+ 行滚动冻结,Form
但我想这只是线程/后台工作人员等的问题。
最让我害怕的是选择。拥有8000 行并单击最后一行 (8000) 需要我的表单 4.2 秒来选择它。它如下:
4000 行使其需要 2.1 秒等。如果选择第 8000 行最小化,然后最大化需要 4.2 秒。选择第 1 行“使它”再次快乐。这是不可接受的。*为什么为我的“标记”第 8000 行这么难Form
?
VirtualMode 的分页效果很好,但选择很痛苦。
还有另一个问题/行为:
为什么CellValueNeeded
当我将鼠标移到行上时会引发事件?他们已经画好了?那么为什么会浪费资源呢?
这个选择问题有什么解决方案吗?或者我必须限制数据网格中的最大记录