Изменение цвета фона 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 и меняю там задние цвета. Есть еще идеи?

Ура !!

Ответы на вопрос(3)

Ваш ответ на вопрос