【问题标题】:WinForms Custom Control ColorsWinForms 自定义控件颜色
【发布时间】:2012-08-30 08:01:51
【问题描述】:

我正在尝试自定义 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,但我为每种控件类型使用了相同的代码。谁能发现我做错了什么?

【问题讨论】:

    标签: c# winforms


    【解决方案1】:

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

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

    【讨论】:

    • 附言。任何想法如何为自定义标签添加不同颜色的边框?
    • @PJW WinForms 在边界方面真的很糟糕——它希望你坚持使用系统的东西。您可以尝试覆盖标签的 OnPaint 方法并在无边框标签上执行简单的e.Graphics.DrawRectangle(...)
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2015-10-04
      • 2018-01-24
      • 1970-01-01
      • 2010-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多