/ / Czy można ustawić TVS_EX_DOUBLEBUFFER bez użycia p / invoke? - c #, winforms, widok drzewa

Czy można ustawić TVS_EX_DOUBLEBUFFER bez użycia p / invoke? - c #, winformy, widok drzewa

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 № 1

Podwó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.