Backcolor NumericUpDown nie działa zgodnie z oczekiwaniami

Niedawno musiałem napisać wersję kontrolki Windows NumericUpDown, która mogłaby wskazywać, czy wartość jest obowiązkowa. Musiał to zrobić, zmieniając tylny kolor kontrolki. Myślałem, że to będzie dość proste, ale próbując to zrobić, stwierdzam, że ma dziwny efekt uboczny, polegający na tym, że nie rysuję całej kontroli.

Korzystając z poniższego kodu, widzę to:

Kiedy upuszczam formant na formularzu Windows i zmieniam właściwość BackColor(tj. na niebiesko), cała część numeru kontrolki zmienia kolor. Jeśli alternatywnie zmienię właściwość „IsMandatory”, nie zmieni się całkowicie cała tylna barwa(pozostawia granicę). Więc jeśli zmienię kolor BackColor na niebieski, a następnie ustawię IsMandatory na True, otrzymam sterowanie LightBlue(obowiązkowy kolor) z niebieską ramką.

Nie rozumiem, dlaczego tak powinno być, ponieważ oba używają tego samego kodu.

Pomysły lub wyjaśnienia zostały bardzo dobrze przyjęte.

   public partial class MyNumericUpDown : NumericUpDown
   {
      private Boolean _isMandatory = false;
      private Color _mandatoryBackColor = Color.LightBlue;
      private Color _backColor = Color.FromKnownColor(KnownColor.Window);

      [DefaultValue(typeof(Color), "Window"), Description("Overridden property")]
      override public Color BackColor
      {
         get { return _backColor; }
         set
         {
            _backColor = value;
            MyResetColors();
         }
      }

      [DefaultValue(typeof(Color), "LightBlue"), Category("Appearance")]
      public Color MandatoryBackColor
      {
         get {return _mandatoryBackColor;}
         set 
         {
            _mandatoryBackColor = value;
            MyResetColors();
         }
      }

      [DefaultValue(false), Category("Behavior")]
      public Boolean IsMandatory
      {
         get { return _isMandatory; }
         set
         {
            _isMandatory = value;
            MyResetColors();
         }
      }

      private void MyResetColors()
      {
         base.BackColor = (this.IsMandatory ? this.MandatoryBackColor : this.BackColor);
      }
   }

questionAnswers(3)

yourAnswerToTheQuestion