Изменение цвета фона NumericUpDown для отключенного элемента
В моем приложении winform I 'Я пытаюсь сделать цветовое кодирование в обязательных полях. При редактировании пользователем, когда требуемый ввод заполнен, фон становится светло-зеленым, если обязательное поле пусто, оно 'фон красный. Некоторые поля включаются и отключаются в зависимости от ввода в других полях, поэтому иногда у меня есть обязательные поля, которые отключены, и которые должны быть полностью отключены (отключен цвет фона). Вот что я имею для изменения фона:
public static void UpdateBackgroundColor(this NumericUpDown control)
{
if (!control.Enabled)
{
control.BackColor = SystemColors.InactiveBorder;
return;
}
var inputValue = control.Value;
if (inputValue == 0)
{
control.BackColor = Color.Red;
return;
}
control.BackColor = Color.LightGreen;
}
Подобная функция работает на TextBox и отлично работает без глюков. Но NumericUpDown ведет себя плохо. Вот что я вижу, когда поле является обязательным и пустым:
Но когда это поле становится недоступным, оно удерживает красную рамку вокруг него:
Та же самая история происходит, когда фон зеленый и становится отключенным.
Так почему это происходит и как это исправить?
UPD: Согласно ханьs ответ, я быстро обновил свой код, но это все еще не работает.
private static void SetBackgroundColor(this Control control, Color color)
{
control.BackColor = color;
foreach (Control childControl in control.Controls)
{
SetBackgroundColor(childControl, color);
}
}
И я'м примерно используя это так:
numericUpDown1.Enabled = true;
numericUpDown1.SetBackgroundColor(Color.Red);
numericUpDown1.Enabled = false;
numericUpDown1.SetBackgroundColor(SystemColors.InactiveBorder);
И все же обведите рамку вокруг текстового поля, несмотря на то, что я просматриваю все дочерние элементы управления NUD и меняю там задние цвета. Есть еще идеи?
Ура !!