使用class作为另一个类中的属性

时间:2013-10-30 14:05:33

标签: c# winforms

我有一个有两个属性的小课

  public class ColorPair
  {
    #region Miembros

  private Color _BackColor;
  private Color _ForeColor;

  #endregion

  #region Auxiliares

  [Browsable(true)]
  [Category("Color pair")]
  [Description("Back color")]
  [DefaultValue(typeof(Color), "White")]
  public Color BackColor
  {
     get { return _BackColor; }
     set{ _BackColor = value; }
  }

  [Browsable(true)]
  [Category("Color pair")]
  [Description("Fore color")]
  [DefaultValue(typeof(Color), "White")]
  public Color ForeColor
  {
     get { return _ForeColor; }
     set
     {
        _ForeColor = value;
     }
  }

  #endregion

  public ColorPair()
  {
     _BackColor = Color.White;
     _ForeColor = Color.Black;
  }

  public ColorPair(Color pFore, Color pBack)
  {
     _BackColor = pFore;
     _ForeColor = pBack;
  }

}

我需要将它用作Control中的属性,如下所示:

      [Browsable(true)]
  [Category("Trevo format")]
  [Description("Basic color")]
  [DefaultValue(typeof(ColorPair), "new ColorPair()")]
  public ColorPair Normal
  {
     get { return _Normal; }
     set
     {
        _Normal = value;
        this.Invalidate();
     }
  }

但是,当我去设计师时,这个属性似乎被禁用了。有没有办法让它能够收集值?

谢谢。

1 个答案:

答案 0 :(得分:0)

回答你的问题 - 是的,有一种方法可以使它能够收集值,但它涉及编写客户属性编辑器(将继承自UITypeEditor)。

创建完成后,您可以使用EditorAttribute将其附加到媒体资源。