我的代码如下:DataGridView中,虚拟模式和 “滞后”
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
但我猜它只是一个问题/ BackgroundWorker的等
最令我害怕的是选择。有8000行和点击最后一个(8000)需要我的形式4.2秒来选择它。其如下:
4000行使它2.1秒,等等。如果选择第8000行,最小化然后最大化需要4.2秒。选择第1行“使其”再次开心。它是不可接受的。 *为什么很难为我的Form
“标记”第8000行?
VirtualMode的分页工作完美,但选择是一种痛苦。
也Theres另一个问题/行为:
为什么当IM移动我的鼠标在列CellValueNeeded
事件引发的?他们已经画了?那为什么它浪费资源?
有没有解决这个选择问题的方法?或者我必须限制数据网格中的最大记录
感谢您的提示,花了很长时间想知道为什么我通过相同的BindingSource编辑数据绑定对象时,为什么我的DataGridView保持刷新所有行。 –