2008-10-05 12 views
5

Chcę podwójnie buforować niestandardowy formant zawierający przyciski. Próbowałem różnych sposobów podwójnego buforowania kontroli; SetStyle, BufferedGraphicsContext i rysunek do bitmapy. Wszystko to działa dobrze dla niestandardowego rysunku kontrolki, ale żaden z nich nie obsługuje rysowania przycisku do bufora wstecznego. Jak to osiągnąć?Kontrole podrzędne dla bufora podwójnego w kontrolce niestandardowej (C#)

+0

Zobacz także: http://stackoverflow.com/questions/76993/how-to-double-buffer-net-controls-on-a-form. – ESRogs

Odpowiedz

2

Technicznie nie możesz i naprawdę nie powinieneś tego robić, jeśli są standardowymi przyciskami WinForms .NET.

Przyciski same kontrolują to poprzez chronioną właściwość DoubleBuffered. Jedynym sposobem uzyskania dostępu do tego byłoby wyprowadzenie nowej klasy z S.W.F.Button i zaimplementowanie kodu w celu włączenia właściwości DoubleBuffered na instancjach tej klasy (prawdopodobnie zrobiłbym to w konstruktorze). Wreszcie użyj obiektów tej nowej klasy w formularzu zamiast S.W.F.Buttons.

Jednak, jak pamiętam, przyciski pochodzą wyłącznie z WinAPI; nie są GDI +. W związku z tym nie powinieneś potrzebować do podwójnego buforowania ich rysunku. Mimo to nie znam Twojego scenariusza użycia i nie wiem, jakie objawy wyświetla twoja aplikacja, więc mógłbym się mylić. :)

Możesz rozważyć sprawdzenie książki Pro .NET 2.0 Windows Forms and Custom Controls in C#. Wszystko to zostało podsumowane na podstawie informacji z tej książki.

Powiązane problemy