Восстановление C # Windows Forms backcolor - PullRequest
17 голосов
/ 22 ноября 2011

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

Задний цвет по умолчанию: SystemColor.Control.

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

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

При повторном щелчке я делаю

btn.BackColor = SystemColors.Control

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

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

Снимок экрана:

Enter image description here

Ответы [ 4 ]

22 голосов
/ 22 ноября 2011

Попробуйте это:

if (button1.BackColor == Color.Yellow)
{
    button1.BackColor = SystemColors.Control;
    button1.UseVisualStyleBackColor = true;
}
else
{
    button1.BackColor = Color.Yellow;
}
11 голосов
/ 22 ноября 2011

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

1 голос
/ 21 декабря 2017

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

btn.BackColor = System.Drawing.Color.Transparent; 
1 голос
/ 22 ноября 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...