Próbuję zredukować migotanie w TreeViewkontrola za pomocą podwójnego buforowania. Wydaje się, że zastosowanie opisanych tutaj zaleceń działa, co ustawia styl rozszerzonego okna TVS_EX_DOUBLEBUFFER dostępny od wersji Vista: Migotanie widoku drzewa?
Jednak wolałbym nie miećdodatkowa zależność od user32.dll, ponieważ projekt jest ustawiony tak, aby działał również na Mono. Czy w jakiś sposób można ustawić styl rozszerzonego okna TVS_EX_DOUBLEBUFFER bez użycia P / Invoke?
Miałem nadzieję, że mogę to zrobić za pomocą CreateParams, ale nie działało. Oto, co próbowałem:
const int TVS_NOHSCROLL = 0x8000;
const int TVS_EX_DOUBLEBUFFER = 0x0004;
protected override CreateParams CreateParams
{
get
{
var parameters = base.CreateParams;
parameters.Style |= TVS_NOHSCROLL;
parameters.ExStyle |= TVS_EX_DOUBLEBUFFER;
return parameters;
}
}
TVS_NOHSCROLL ma jedynie zademonstrować ustawieniestyl okna za pomocą CreateParams, który działa. Zgodnie z dokumentacją możesz użyć ExStyle do ustawienia rozszerzonych stylów okien, ale niestety nie wydaje się to działać w TreeView.
Jakieś pomysły?
Odpowiedzi:
0 dla odpowiedzi № 1Podwójne buforowanie w kontrolkach formularzy Windows Forms .NET można ustawić za pomocą właściwości o tej samej nazwie:
yourControl.DoubleBuffered = true;
Możesz użyć SetStyle
metoda kontroli, aby ustawić dodatkowe style.