2008-10-05 13 views
5

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#)

+0

Vedere anche: http://stackoverflow.com/questions/76993/how-to-double-buffer-net-controls-on-a-form. – ESRogs

risposta

2

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.

Problemi correlati