在我的winforms應用程序中,我有一個datagridview需要大約0.8秒填充+/- 5000rows - 如果所有列都是文本框列。Winforms Datagridview太慢ImageColumn
其中一列的是一個整數列,所以決定該列改變爲ImageColumn和在網格的Cell_formatting事件,我使用以下代碼來確定要顯示的適當的圖像:
private void dgv_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) {
if (dgv.Columns[e.ColumnIndex] is DataGridViewImageColumn && e.ColumnIndex == 1) {
int cellVal = (int)e.Value;
switch (cellVal) {
case 1:
e.Value = Properties.Resources.Pending;
dgv.Rows[e.RowIndex].Cells[e.ColumnIndex].ToolTipText = "Item pending attention";
break;
case 2:
e.Value = Properties.Resources.Tick
dgv.Rows[e.RowIndex].Cells[e.ColumnIndex].ToolTipText = "File is available";
break;
default:
break;
}
}
}
它的工作原理。但是,datagridview現在幾乎需要5秒來填充本身!而排序列只是太耗時。 5秒現在看起來可能不是很多,但在大約2個月的時間內,排就會增長到約30,000!
有沒有更有效的方法來處理這種情況?
謝謝你!
嗨再次索林!謝謝回覆。虛擬模式是否有助於數據性能或網格本身的UI性能?如果前者,那麼它不會對我作出差異。我的瓶頸是實際的網格格式事件。我不知道虛擬的綁定模式是否會有所作爲 – Shalan 2009-11-27 12:30:59
嘿,沙蘭。我會說這兩者(儘管對於數據性能來說,事情需要更復雜的方法,如下所示:http://msdn.microsoft.com/en-us/library/ms171624.aspx)。我確實運行了一些簡單的(istic?)測試(預加載的數據,然後以「經典」模式和虛擬模式添加到數據網格中),並且UI提升非常巨大。 – 2009-11-27 12:38:30
「我不知道虛擬綁定模式是否會產生影響」 - 試試看,你會失去什麼? – 2009-11-27 12:39:16