■99519 / inTopicNo.2) |
Re[1]: C#のDataGridView |
□投稿者/ 魔界の仮面弁士 (3332回)-(2022/04/20(Wed) 22:12:40)
|
2022/04/21(Thu) 09:55:22 編集(投稿者)
■No99518 (星は昴 さん) に返信 > DataGridView の表示が目に見えて遅い(体感的に0.2秒くらい^^;)です。
データの受け渡しを dataGridView1[columnIndex, rowIndex].Value = newValue; などで行っていないでしょうか? セルに直接アクセスすると、その親行が非共有になり、そのたびに 新しい DataGridViewRow のインスタンスが作成されてしまいます。
効率的なメモリ使用のためには、共有行を使わせるために dataGridView1.DataSource = バインドソース; のようにして、DataGridView 自体ではなくソース側(例えば DataTable)を 編集するようにします。条件次第では仮想モードを使うという選択肢もアリ。
あるいは、.Rows.Add や .Rows.Insert を使う方法もありますが、こちらも Add(object[]) や Insert(object[]) なオーバーロードは 非共有行になるので避けるようにします。
セルスタイルも同様で、極力、個別のセルに対して割り当てることは 避けるようにします(DefaultCellStyle を使う)。データ依存で色などを 変更したい場合は、CellFormatting イベントを使うのが良いでしょう。
その他、こちらの記事も参照してみてください。 [Windows フォーム DataGridView コントロールでのパフォーマンス チューニング] https://docs.microsoft.com/ja-jp/dotnet/desktop/winforms/controls/performance-tuning-in-the-windows-forms-datagridview-control?view=netframeworkdesktop-4.8
|
|