WinForms自定义控件颜色

时间:2012-09-05 14:51:02

标签: c# winforms

我正在尝试自定义WinForms数据库应用程序上的控件。

到目前为止,我只尝试使用以下代码自定义标签和按钮:

namespace MyNamespace
{
  public class CMSLabel : Label
  {
    private Color cmsLabelBackColor = aSystem.LabelBackColor;

    public CMSLabel()
    {
        this.BackColor = cmsLabelBackColor;            
    } 

    [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]

    public new Color BackColor
    {
        get { return cmsLabelBackColor; }
        set { }
    }
  }

  public class CMSButton : Button
  {
    private Color cmsButtonColor = aSystem.ButtonColor;

    public CMSButton()
    {            
        base.BackColor = cmsButtonColor;
    }

    [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]

    public new Color BackColor
    {
        get { return cmsButtonColor; }
        set { }
    }
  }
}

Button控件完美运行,但Label控件根本没有显示BackColor,但我为每种控件类型使用了相同的代码。谁能发现我做错了什么?

2 个答案:

答案 0 :(得分:2)

你必须改变“基础”颜色:

public CMSLabel()
{
  base.BackColor = cmsLabelBackColor;            
}

答案 1 :(得分:1)

在CMSButton中设置 base .BackColor,但在CMSLabel中设置 this .BackColor,它在setter中没有代码。