我有一個DataGridView複選框列。我正在嘗試創建一個選擇/取消全選按鈕。用於更改值的代碼很簡單,但性能非常可怕。DataGridView複選框列「全選」性能
for (int i = 0; i < dgv.RowCount; i++)
{
dgv.Rows[i].Cells["Selected"].Value = _selectAll;
}
_selectAll只是一個切換bool變量。在性能快的地方有沒有更好的方法來做到這一點?我試着改變底層DataTable的值。對於幾百行來說,它仍然需要幾秒鐘,但大部分工作將在數千行上完成。
EDIT & SOLUTION(2011年10月4日)
的主要問題是在DGV性質。一旦我設置,
dgv.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells;
性能顯着提高(每MSDN DataGridView Performance)。 在編輯時提出的解決方案也會稍微提高性能。
嘗試按索引而不是按名稱訪問列。例如'dgv.Rows [i] .Cells [1] .Value = _selectAll;' –
你有沒有任何屬性的網格或只是從背後的代碼給它? –
你確定這是瓶頸嗎?我認爲這是其他地方。 –