Причина, по которой это не работает, заключается в том, что Thread.Sleep () блокирует завершение потока.
Окно перерисовывается, только когда приложение ничего не делает, т.е. после завершения вашего метода. Если вы удалите строку, где вы изменили ее на DarkGreen
, вы увидите, что она изменит цвет через пять секунд.
Вы должны использовать таймер для решения вашей проблемы.
Если вы хотите, вы можете принудительно обновить интерфейс, не выходя из метода с вызовом Application.DoEvents();
, который будет отражать сделанные вами изменения, такие как изменение цвета.
button1.BackColor = Color.Lime;
Application.DoEvents()
Thread.Sleep(5000);
button1.BackColor = Color.DarkGreen;
Обратите внимание, что установка Thread Sleep - это плохая идея в программе с пользовательским интерфейсом, но в целях иллюстрации он покажет вам, как заставить его менять цвет.