Podczas ładowania danych dochodzące do nawet kilkudziesięciu sekund oraz duże spowolnienie działania samej kontrolki np. brak płynności podczas przewijania tabeli z danymi.Przedstawione rozwiązanie dotyczy problemu związanego z kontrolką WindowsForms – dataGridView.
Rozwiązaniem tego problemu jest dodanie podwójnego buforowania danych.
W tym celu należy dodać nową statyczną klasę do swojej aplikacji, którą nazywamy np. DoubleBuffer edGridView().
Klasa przedstawia się następująco:
using System;
using System.Text;
using System.Reflection;
using System.Windows.Forms;
namespace DziennikKancelaryjny // Wpisujemy swoją przestrzeń nazw
{
public static class DoubleBufferedGridView
{
public static void DoubleBuffered(this DataGridView datagridview, bool set)
{
Type datagridviewType = datagridview.GetType();
PropertyInfo propertyinf = datagridviewType.GetProperty("DoubleBuffered",
BindingFlags.Instance | BindingFlags.NonPublic);
propertyinf.SetValue(datagridview, set, null);
}
}
}
Następnie dodajemy nasze buforowanie dla docelowego dataGriedView tak, aby wywoływało się podczas uruchamiania aplikacji:
dataGridView1.DoubleBuffered(true);
To wszystko :) Od teraz możesz się cieszyć szybkim ładowanie swojej kontrolki w około 1 sekundę ;)
Rozwiązanie jest banalne, a o ile ułatwia życie.