potisanのプログラミングメモ

趣味のプログラマーがプログラミング関係で気になったことや調べたことをいつでも忘れられるようにメモするブログです。はてなブログ無料版なので記事の上の方はたぶん広告です。記事中にも広告挿入されるみたいです。

C# 9 リストビューの高速化ならItems.AddRangeも選択肢

リストビューに大量のアイテムをListView.Items.Addメソッドで追加していたら律速になっていました。仮想リストビューも一つの手ですが、項目が多い場合はListView.Items.AddRangeで高速化できる場合があります

listView1.BeginUpdate();

// infosという配列様オブジェクトから項目を作成する。
var items = new ListViewItem[infos.Length];
for (var i = 0; i < items.Length; i++)
{
    var info = infos[i];
    // ListView.SubItems.Addを毎回呼び出さない。
    items[i] = new ListViewItem(new[]{
        info.A,
        info.B,
        info.C,
        ...
        info.Z,
    });
}
// ListView.Items.Addを毎回呼び出さない。
listView1.Items.AddRange(items);

// listView1.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent);
listView1.EndUpdate();