我有一個datagridview填充20000行和是的,我需要所有的一次顯示,因爲如果我加載它的一部分,那麼報告是沒有用的在所有的。C#Win。形式 - 優化代碼,以改變20000個單獨的行的顏色
現在越來越記錄約需1.5至2秒這是因爲大量的理性,但取我必須單獨改變對我的情況下滿足像一個特定的情況下,如果該記錄有每一行的顏色記錄之後列「Iden = 0」,然後將顏色更改爲「淺灰色」,其中使用以下代碼。
//Datagridview Has 20,000 Records in it
for (int i = 0; i < dgvItem.Rows.Count; i++)
{
if (dgvItem.Rows[i].Cells["Iden"].EdittedFormattedValue.ToString() == "0")
{
dgvItem.Rows[i].DefaultCellStyle.BackColor = Color.LightGrey;
}
}
但使用上面的代碼大約需要10-12秒。現在有什麼辦法可以優化它嗎?
我已經嘗試使用 「SuspendLayout」 和 「ResumeLayout」 但這是沒用的。
我不確定,但可能是你可以嘗試改變RowPostPaint/RowPrePaint事件中的行的顏色 – VDN
@VDN你似乎錯過了這一點。 「dgvItem.Rows [i] .DefaultCellStyle.BackColor = Color.LightGrey;」這句話是花費時間來執行20K次,這就是爲什麼我要求替代品。 –
我的理解正確,我認爲使用RowPostPaint應該工作得很快。據我所知,事件RowPostPaint被調用只對當前在屏幕上可見的行,所以它不會執行20K – VDN