Я выяснил причину для проблемы. Повороты там являются другим свойством (для Кнопок и TabPages только, это кажется), названный UseVisualStyleBackColor
. Это управляет, использовать ли "Визуальные Стили" при вычислении BackColor
. И усугублять положение, как только Вы устанавливаете BackColor
, это установлено на false
. Таким образом, я только что закончил тем, что делал это:
this.oldUseVisualStyleBackColor = myButton.UseVisualStyleBackColor;
this.oldColor = myButton.BackColor;
myButton.BackColor = Color.Blue;
И когда я готов сбросить его:
myButton.BackColor = this.oldColor;
myButton.UseVisualStyleBackColor = this.oldUseVisualStyleBackColor;
(Да, необходимо сбросить BackColor
во-первых, и только затем набор UseVisualStyleBackColor
.)
Я понятия не имею почему UseVisualStyleBackColor
используется, или почему это делает то, что это делает, но это, кажется, работает теперь.
(Спасибо, Marc! Я не нашел бы это без Вашей справки!)
Я подозреваю, что различие - то, что каждый - регулярный цвет argb, и каждый - системный/знать цвет.
Средства управления в.NET отслеживают то, является ли цвет явным (набор на этом управлении) или наследованный. Это мешает возвращаться правильно..., но Вы смогли делать это с PropertyDescriptor
, как так:
TextBox tb = new TextBox();
tb.BackColor = Color.Red;
// now set it back to inherited
PropertyDescriptor prop = TypeDescriptor.GetProperties(tb)["BackColor"];
if (prop.CanResetValue(tb))
{
prop.ResetValue(tb);
}
Немного неуклюжий, но это должно работать.
Или вы можете просто набрать:
TextBox tb = new TextBox();
//Change the Backcolor
tb.BackColor = Color.Red;
//Resets the Backcolor to its default value, its pretty strange that you don't see the method but it works with allmost all properties
tb.ResetBackColor();