65.9K
CodeProject is changing. Read more.
Home

Enable DataGridView DoubleBuffered Property

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.92/5 (8 votes)

Jul 8, 2016

CPOL
viewsIcon

29810

Increase DataGridView performance

Introduction

When a DataGridView use a big size of data, it tends to get really slow to scroll and it could became problem.

Using the code

Microsoft has decided to hide the DoubleBuffered property, but you can set it anyway with reflection.

Imports System.Reflection

Usually double buffering helps only to reduce flickering, but for the DataGridView it also significantly reduces the amount of functions being called internally in the DataGridView.

Public Sub EnableDoubleBuffered(ByVal dgv As DataGridView)

    Dim dgvType As Type = dgv.[GetType]()

    Dim pi As PropertyInfo = dgvType.GetProperty("DoubleBuffered", _
                                                 BindingFlags.Instance Or BindingFlags.NonPublic)

    pi.SetValue(dgv, True, Nothing)

End Sub

Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load

    EnableDoubleBuffered(MyDataGridView, True)

End Sub