Я хочу удвоить буфер для настраиваемого элемента управления, содержащего кнопки. Я пробовал различные способы двойной буферизации элемента управления; SetStyle, BufferedGraphicsContext и рисование в растровое изображение. Все они отлично работают для настраиваемого рисования элемента управления, но ни один из них не обрабатывает рисование кнопки в задний буфер. Как мне этого добиться?





Технически вы не можете, и вам действительно не нужно, если это стандартные кнопки .NET WinForms.
Сами кнопки управляют этим через защищенное свойство DoubleBuffered. Единственный способ получить к нему доступ - это получить новый класс из S.W.F.Button и реализовать код для включения свойства DoubleBuffered в экземплярах этого класса (я бы, вероятно, сделал это в конструкторе). Наконец, используйте в форме объекты этого нового класса вместо S.W.F.Buttons.
Однако, насколько я помню, кнопки взяты исключительно из WinAPI; они не GDI +. В результате вам не нужно необходимость для двойной буферизации их рисования. Тем не менее, я не знаю вашего сценария использования и не знаю, какие симптомы отображает ваше приложение, поэтому могу ошибаться. :)
Вы можете почитать книгу Pro .NET 2.0 Windows Forms и пользовательские элементы управления на C#. Все это было обобщено на основе информации в этой книге.
См. Также: stackoverflow.com/questions/76993/….