DataGridView – płynne przewijanie zawartości

2013-05-19

Przy dużych zbiorach danych prezentowanych w kontrolce DataGridView może pojawić się problem z płynnością ich przewijania. Sposobem na wyeliminowanie tego efektu jest ustawienie właściwości DoubleBuffered na true. Jest to właściwość protected więc mamy dwie możliwości: stworzyć własną klasę dziedziczącą po DataGridView i w niej ustawić wartość właściwości DoubleBuffered lub stworzyć metodę rozszerzającą, która przy użyciu refleksji odwoła się do omawianej właściwości i ustawi jej wartość. Poniżej znajduje się implementacja drugiego z wymienionych sposobów:

public static class DataGridViewExtensions
{
	public static void DoubleBuffered(this DataGridView dgv, bool setting)
	{
		Type dgvType = dgv.GetType();
		PropertyInfo pi = dgvType.GetProperty("DoubleBuffered",
			BindingFlags.Instance | BindingFlags.NonPublic);
		pi.SetValue(dgv, setting, null);
	}
}

Użycie powyższej metody:

dataGridView1.DoubleBuffered(true);

Dzięki właściwości DoubleBuffered jesteśmy w stanie wyeliminować problemy z brakiem płynności oraz odświeżaniem kontrolki DataGridView podczas przewijania jej zawartości.

Reklamy

Posted on 2013-05-19, in .NET/C# and tagged , , , . Bookmark the permalink. Dodaj komentarz.

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Wyloguj / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Wyloguj / Zmień )

Zdjęcie na Facebooku

Komentujesz korzystając z konta Facebook. Wyloguj / Zmień )

Zdjęcie na Google+

Komentujesz korzystając z konta Google+. Wyloguj / Zmień )

Connecting to %s

%d blogerów lubi to: