Вместо Перекрасить (что действительно медленно) Я рекомендую использовать эту пару строк для обновления элемента управления:
myControl.Visible = False
myControl.Visible = True
Это намного быстрее. Невидимое состояние настолько короткое, что оно ведет себя очень плавно.
Это также работает для меня, где DoEvents не работает. Например. в классе, который имеет атрибут WithEvents для обработки событий элемента управления и изменения его внешнего вида.
Надеюсь, это поможет!