私はチェックボックスの列を持つDataGridViewを持っています。私はすべての選択/選択解除ボタンを作成しようとしています。値を変更するためのコードは簡単ですが、パフォーマンスは恐ろしいものです。DataGridViewチェックボックスの列「すべてを選択」のパフォーマンス
for (int i = 0; i < dgv.RowCount; i++)
{
dgv.Rows[i].Cells["Selected"].Value = _selectAll;
}
_selectAllは、単にトグルブール変数です。パフォーマンスが速い場所でこれを行うより良い方法はありますか?私は基礎となるDataTableの値を変更しようとしました。わずか数百行で数秒かかりますが、ほとんどの作業は何千行も行なわれます。
& EDIT溶液(2011年10月4日)
主な問題は、DGV特性でした。設定したら、
dgv.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells;
パフォーマンスが大幅に改善されました(MSDN DataGridView Performance)。 この編集時点で提案されている解決策も、パフォーマンスを少し向上させます。
名前ではなくインデックスで列にアクセスしてみてください。例えば'dgv.Rows [i] .Cells [1] .Value = _selectAll;' –
グリッドはどのプロパティにも束縛されているのでしょうか? –
ボトルネックはどこにあるのですか?私はそれが他の場所だと思っています。 –