Desidero raddoppiare il buffer di un controllo personalizzato che contiene pulsanti. Ho provato vari modi per raddoppiare il controllo del buffer; SetStyle, BufferedGraphicsContext e disegno in una bitmap. Funzionano tutti bene per il disegno personalizzato del controllo, ma nessuno di essi gestisce il disegno del pulsante su un buffer posteriore. Come ottengo questo?Controlli figlio doppio buffer nel controllo personalizzato (C#)
risposta
Tecnicamente non è possibile, e davvero non dovrebbe essere necessario se si tratta di pulsanti .NET WinForms standard.
I pulsanti stessi controllano tale proprietà tramite la proprietà DoubleBuffered protetta. L'unico modo per accedervi sarebbe derivare una nuova classe da S.W.F.Button e implementare il codice per abilitare la proprietà DoubleBuffered su istanze di quella classe (probabilmente lo farei nel costruttore). Infine, usa gli oggetti di quella nuova classe sul tuo modulo invece di S.W.F.Buttons.
Tuttavia, come ricordo, i pulsanti sono puramente estratti da WinAPI; non sono GDI +. Di conseguenza, non è necessario necessario per eseguire il doppio buffer del disegno. Detto questo, non conosco il tuo scenario di utilizzo e non so quali sintomi sta visualizzando la tua app, quindi potrei sbagliarmi. :)
Si potrebbe prendere in considerazione la verifica del libro Pro .NET 2.0 Windows Forms and Custom Controls in C#. Tutto questo è stato riassunto dalle informazioni contenute in quel libro.
- 1. WinForms doppio buffer
- 2. C# progettato non riconosce l'evento personalizzato nel controllo utente personalizzato
- 3. Come incorporare JQuery nel controllo server personalizzato
- 4. Come clonare/copiare un controllo (con controlli figlio) usando asp.net?
- 5. C# WinForms Proprietà predefinite di controllo personalizzato
- 6. (C#) SuspendLayout passa in cascata ai controlli figlio?
- 7. Controllo personalizzato in ASP.NET C#
- 8. Come creare comandi associabili nel controllo personalizzato?
- 9. Controllo personalizzato iPhone/iOS
- 10. Come aggiungere personalizzato ai controlli ASP.NET
- 11. Devo chiamare SuspendLayout per ogni controllo figlio?
- 12. Designer personalizzato per un controllo
- 13. L'evento doppio fa scattare a livello di finestra e livello di controllo, anche quando viene gestito all'interno del controllo
- 14. controllo personalizzato wpf non riconosciuto
- 15. Xamarin Forms controlli figlio all'interno del pulsante
- 16. doppio? = doppio? + doppio?
- 17. Mouse controllo genitori Immettere/uscire dagli eventi con i controlli figlio
- 18. C di controllo # utente come un pannello personalizzato
- 19. Umbraco: elenca i nodi figlio nel controllo utente
- 20. Controllo drop drop doppio elenco
- 21. C++ 11: blocco doppio controllo sicuro per l'inizializzazione pigra. Possibile?
- 22. Controlli dei Cloni - C# (Winform)
- 23. Deriva il controllo utente dalla classe base controllo utente personalizzato
- 24. Inserire i controlli dinamici nel mezzo della collezione di controlli
- 25. C# Winform: visualizzazione efficiente di molti controlli
- 26. Silverlight: Trova tutti i controlli di tipo nel layout
- 27. Formato doppio in C#
- 28. Python nel buffer Vim?
- 29. Creazione di un controllo SSRS personalizzato
- 30. GDI + doppio buffering in C++
Vedere anche: http://stackoverflow.com/questions/76993/how-to-double-buffer-net-controls-on-a-form. – ESRogs