Когда я изменяю Кнопку.NET BackColor назад к его исходному значению, он больше не выглядит одинаково

Попробуйте:

^(\d{0,2}[hms]){0,3}$

примеры: https://regex101.com/r/NV6oEu/1

10
задан Vadim Kotov 23 October 2017 в 13:35
поделиться

3 ответа

Я выяснил причину для проблемы. Повороты там являются другим свойством (для Кнопок и 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! Я не нашел бы это без Вашей справки!)

14
ответ дан 3 December 2019 в 18:02
поделиться

Я подозреваю, что различие - то, что каждый - регулярный цвет 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);
    }

Немного неуклюжий, но это должно работать.

3
ответ дан 3 December 2019 в 18:02
поделиться

Или вы можете просто набрать:

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();
2
ответ дан 3 December 2019 в 18:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: