Подтвердить что ты не робот

Восстановить С# Windows Forms backcolor

У меня есть кнопка в форме Windows Forms, для которой я меняю цвет фона на Color.Yellow при нажатии. Когда он снова щелкнет, я хочу восстановить его по умолчанию по умолчанию.

Цвет фона по умолчанию SystemColor.Control.

Когда кнопка нажата в первый раз, единственное, что я могу изменить, это

btn.Text = "ABC";
btn.BackColor = Color.Yellow;

Когда он снова щелкнул, я делаю

btn.BackColor = SystemColors.Control

Новый фон не имеет того же оттенка, что и раньше, перед любыми щелчками. У кнопки первоначально был фон, который не был сплошным цветом, но был двумя слегка разными оттенками серого. Конечный цвет заканчивается сплошным оттенком серого.

Я тестирую это на машине под Windows 7.

Скриншот:

Enter image description here

4b9b3361

Ответ 1

Попробуйте следующее:

if (button1.BackColor == Color.Yellow)
{
    button1.BackColor = SystemColors.Control;
    button1.UseVisualStyleBackColor = true;
}
else
{
    button1.BackColor = Color.Yellow;
}

Ответ 2

Вы также должны установить UseVisualStyleBackColor в значение true. Это свойство получает значение false, когда вы изменяете цвет фона.

Ответ 3

Попробуйте использовать btn.ResetBackColor() вместо ручной настройки BackColor.

Ответ 4

Это приведет к восстановлению образа по умолчанию (тестируется в Windows 7,.net 3.5):

btn.BackColor = System.Drawing.Color.Transparent;