天天看點

解決Datagridview虛拟模式下閃爍的問題

Datagridview控件的虛拟模式(VirtualMode)可用于顯示較大的資料量,按照MSDN中的說法,隻需實作CellValueNeeded事件即可。但筆者在使用虛拟模式開發時發現:當需要顯示較多資料時,特别是行和列較多的情況下,行頭出現閃爍的問題,尤其是拖動滾動條的時候閃爍很嚴重。

經測試發現:是因為在CellValueNeeded事件中使用了下面的代碼導緻閃爍

Private Sub DataGridView1_CellValueNeeded(sender As Object, e As System.Windows.Forms.DataGridViewCellValueEventArgs) Handles DataGridView1.CellValueNeeded
        DataGridView1.Rows(e.RowIndex).HeaderCell.Value = (e.RowIndex + 1).ToString
        '其他代碼
 End Sub
           

後改為如下的代碼後,閃爍問題解決

Private Sub DataGridView1_CellValueNeeded(sender As Object, e As System.Windows.Forms.DataGridViewCellValueEventArgs) Handles DataGridView1.CellValueNeeded
        If DataGridView1.Rows(e.RowIndex).HeaderCell.Value Is Nothing Then
            DataGridView1.Rows(e.RowIndex).HeaderCell.Value = (e.RowIndex + 1).ToString
        End If
        '其他代碼
 End Sub
           

繼續閱讀