2012-02-19 33 views
1

所以现在我需要为ac#项目做一个自定义控件,主要观点是我想做一个控件,我可以改变文字颜色使用通过下拉菜单控制属性。所以我想限制可以选择的颜色。现在,我有四个单独的颜色标签,但我需要一个选项来更改单个属性的颜色。颜色是使用RGB值预定义的。这里是现有的标签代码,我怎样才能将它制作成一个带有多种颜色选项的标签?如何限制选择使用enum文本颜色的自定义控件

这是现有的标签代码。 http://pastebin.com/mezTBMxN 谢谢你的一切帮助。

回答

1

您可以使用包含所需四种颜色的公共枚举定义您自己的自定义属性。然后,当您渲染控件时,可以相应地设置ForeColor。

枚举:

public enum LabelColor 
{ 
    Gray, 
    Green, 
    Blue, 
    Red, 
    None 
} 

自定义属性:在构造函数重载RenderControl()

[Bindable(true)] 
[DefaultValue(LabelColor.None)] 
[Category("Appearance")] 
public LabelColor TextColor 
{ 
    get 
    { 
     EnsureChildControls(); 
     return (ViewState["TextColor"] != null) ? 
      (LabelColor)Enum.Parse(typeof(LabelColor), ViewState["TextColor"].ToString()) : 
      LabelColor.None; 
    } 

    set 
    { 
     EnsureChildControls(); 
     ViewState["TextColor"] = value; 
    } 
} 

设置颜色或。请注意,如果喜欢,可以使用Color.FromArgb(),但是,我会建议分配CSS类以保持演示文稿的分离。

switch (this.TextColor) 
{ 
    case LabelColor.Gray: 
     this.CssClass = "label-gray"; 
     break; 
    case LabelColor.Blue: 
     this.CssClass = "label-blue"; 
     break; 
    case LabelColor.Green: 
     this.CssClass = "label-green"; 
     break; 
    case LabelColor.Red: 
     this.CssClass = "label-red"; 
     break; 
} 
+0

对于枚举,应该在标签类之外还是之内声明它? – Annabelle 2012-02-19 17:48:37

+0

我在控件类中定义了我的矿井,因为它实际上只用于那个控件。 – 2012-02-19 17:50:03

+0

因此,如果我想将这四种颜色用于多种控制,可以在外部定义它吗?另外,你能告诉我如何使用颜色从RGB而不是CSS?我以前没有用过CSS。 – Annabelle 2012-02-19 17:51:10

相关问题