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#)
Odpowiedz
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.
- 1. Kontrole Clone - C# (Winform)
- 2. Dodaj kontrole podrzędne do niestandardowego sterowania po kliknięciu przycisku "OK" w oknie "CollectionEditor" w czasie projektowania
- 3. TemplateBinding do DependencyProperty na niestandardowej kontrolce nie działa
- 4. Lista Wszystkie kontrole w C# ASP.NET Projektu
- 5. Przesunięcie panelu środkowego w kontrolce C#
- 6. C# Przejdź do zakotwiczeń w kontrolce WebBrowser
- 7. Definicja „==” operatora dla podwójnego
- 8. Zachowanie klawiszy kart w kontrolce edycji przeglądarki
- 9. C# XMLreader i węzły podrzędne
- 10. Zwykły obraz w kontrolce Windows Forms StatusStrip
- 11. Składnia C++ dla niestandardowej klasy wyjątków
- 12. Tworzenie kontrole non-UI wątek
- 13. Konwertowanie podwójnego na int w C#
- 14. Konwertowanie podwójnego na ciąg w C++
- 15. Jak dodać cookie w kontrolce internetowej?
- 16. Wiele zdarzeń MouseHover w kontrolce
- 17. Tworzenie bufora pikseli Objective-C
- 18. Uzyskanie absolutnej pozycji elementu HTML w kontrolce przeglądarki z C#
- 19. Jak zaktualizować zawartość DOM w kontrolce WebBrowser w języku C#?
- 20. Jak napisać funkcję c() dla niestandardowej klasy S3 w R
- 21. Jak uniknąć podwójnego cudzysłowu wewnątrz podwójnego cudzysłowu?
- 22. Przenośne drukowanie wykładnika podwójnego do C++ iostreams
- 23. Jak ustawić lokalny atrybut bufora dla określonego bufora?
- 24. Jak włączyć WSZYSTKIE kontrole w formularzu?
- 25. Sekcja konfiguracji niestandardowej w App.config C#
- 26. Jak używać niestandardowej podklasy C# w XAML?
- 27. Unikaj podwójnego konkatatu w Ramdzie
- 28. Wykonywanie testu podwójnego w OCaml
- 29. Ustawianie gęstości niestandardowej dla emulatora
- 30. Windows Form jako okno podrzędne niezarządzanej aplikacji
Zobacz także: http://stackoverflow.com/questions/76993/how-to-double-buffer-net-controls-on-a-form. – ESRogs