私のコードは次のようになります。
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
読み取り専用です。
現在、5000行以上のスクロールがフリーズすると言うことを示すProgressBar
withスタイルもありますが、それはスレッド/バックグラウンドワーカーなどの問題だと思います.Marquee
Form
私が最も恐れているのは、選択です。8000 行あり、最後の行 (8000)をクリックすると、フォームを選択するのに 4.2 秒かかります。そして、その次のとおりです。
4000 行では 2.1 秒、などです。8000 番目の行を最小化してから最大化を選択すると、4.2 秒かかります。行 1 を選択すると、再び幸せになります。受け入れられない。*私の 8000 番目の行を「マーク」するのが難しいのはなぜForm
ですか?
VirtualMode のページネーションは完璧に機能しますが、選択が面倒です。
別の問題/動作もあります:
CellValueNeeded
マウスを行の上に移動するとイベントが発生するのはなぜですか? 彼らはすでに塗装されていますか?では、なぜリソースを浪費しているのでしょうか。
この選択問題の解決策はありますか? または、データグリッドの最大レコード数を制限する必要があります