Как я могу предотвратить изменение BackColor элемента управления? - PullRequest
0 голосов
/ 14 февраля 2012

Я хочу, чтобы панель, наследуемая от базовой панели, имела фиксированный BackColor независимо от того, где она используется. Моя базовая панель выглядит так:

public class MyPanel
{
    public override Color BackColor
    {
        get
        {
            return base.BackColor;
        }
        set
        {
            base.BackColor = Color.Red;
        }
    }
}

BackColor не задано в файле Designer.cs примера формы:

this.sampleControl.Font = new System.Drawing.Font("Tahoma", 8.25F,
    System.Drawing.FontStyle.Regular, 
    System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.sampleControl.Location = new System.Drawing.Point(0, 0);
this.sampleControl.Margin = new System.Windows.Forms.Padding(5);
this.sampleControl.Name = "sampleControl";
this.sampleControl.Padding = new System.Windows.Forms.Padding(2, 0, 2, 2);
this.sampleControl.Size = new System.Drawing.Size(230, 100);
this.sampleControl.TabIndex = 1;

На самом деле нигде не задан цвет, поэтому я полагаю, что он каким-то образом получает свойство от панели, на которой он находится. Как я могу предотвратить это?

Ответы [ 2 ]

2 голосов
/ 14 февраля 2012

Как насчет:

public class MyPanel : Panel
{
    private Color backColor = Color.Red;

    public MyPanel()
    {
        // Set the color once
        this.BackColor = backColor;
    }

    public override Color BackColor
    {
        get
        {
            return base.BackColor;
        }
        set
        {
            base.BackColor = backColor;
        }
    }
}
1 голос
/ 14 февраля 2012

Просто установите его в конструкторе MyPanel.

BackColor=Color.Red;

Вам не нужно override, если вы не хотите, чтобы другие не могли его изменить.

...