czwartek, 28 lutego 2013

DataGridView Performance

Jak zapewne wiadomo, korzystanie ze standardowej kontrolki DataGridView dostępnej w .NET często wiąże się z problemami z jej wydajnością. Pomijając już kwestię zaawansowanej optymalizacji, czy też wyłączania efektów wizualnych (w końcu nie chodzi o to żeby coś było brzydkie) najprościej stworzyć klasę:
public static class ExtensionMethods
    {
        public static void DoubleBuffered(this DataGridView dgv, bool setting)
        {
            Type type = dgv.GetType();
            PropertyInfo pi = type.GetProperty("DoubleBuffered", BindingFlags.Instance | BindingFlags.NonPublic);
            pi.SetValue(dgv, setting, null);
        }
    }

Następnie w konstruktorze, po inicjalizacji kontrolek, umieszczamy taki kawałek kodu:
ExtensionMethods.DoubleBuffered(MyGridName, true);

Jak można się domyślać po "DoubleBuffered", nasz DataGridView powinien teraz działać znacznie szybciej :)

Pozdrawiam