Метод OnPaintBackground никогда не вызывается для элемента управления, полученного из Button

Я сделал классGradientButton который должен быть кнопкой, которая заполнена градиентным фоном.

Я рисую градиентную заливку вOnPaintBackground() метод. К сожалению, это никогда не вызывается, конечно, я добавилGradientButton кForm через панель инструментов:

  public class GradientButton : Button {

        public Color Color1 { get; set; }
        public Color Color2 { get; set; }

        public float Angle { get; set; }

        public GradientButton() {
            Color1 = Color.YellowGreen;
            Color2 = Color.LightGreen;
            Angle = 30;
        }



        protected override void OnPaintBackground(PaintEventArgs e) {
            base.OnPaintBackground(e);
            Debug.WriteLine("This never prints");
            using (LinearGradientBrush brush = new LinearGradientBrush(this.ClientRectangle,
                                                                       Color1,
                                                                       Color2,
                                                                       Angle)) {
                e.Graphics.FillRectangle(brush, this.ClientRectangle);
            }
        }
        protected override void OnResize(EventArgs e) {
            base.OnResize(e);
            Invalidate();
        }
    }

Вопрос: Как заполнить фон кнопки градиентом? ЗачемOnPaintBackground не вызывается? Насколько я знаю это надо называть доOnPaint метод.

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

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