C# 如何使用enum for text color限制自定义控件的选项
现在我需要为一个c#项目创建一个自定义控件,主要的一点是我想创建一个控件,在这里我可以通过下拉菜单使用控件属性更改文本颜色。所以我想限制什么颜色可以选择。现在,我有四个独立的颜色标签,但我需要一个带有选项的标签,可以从单个属性更改颜色。颜色是使用RGB值预定义的。这是现有的标签代码,如何将其制作成一个具有多个颜色选项的标签 这是现有的标签代码。C# 如何使用enum for text color限制自定义控件的选项,c#,C#,现在我需要为一个c#项目创建一个自定义控件,主要的一点是我想创建一个控件,在这里我可以通过下拉菜单使用控件属性更改文本颜色。所以我想限制什么颜色可以选择。现在,我有四个独立的颜色标签,但我需要一个带有选项的标签,可以从单个属性更改颜色。颜色是使用RGB值预定义的。这是现有的标签代码,如何将其制作成一个具有多个颜色选项的标签 这是现有的标签代码。 感谢您的帮助。您可以使用包含所需四种颜色的公共枚举定义自己的自定义属性。然后,在渲染控件时,可以相应地设置前景色 枚举: 自定义属性: [Bindabl
感谢您的帮助。您可以使用包含所需四种颜色的公共枚举定义自己的自定义属性。然后,在渲染控件时,可以相应地设置前景色 枚举: 自定义属性:
[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;
}
}
在构造函数中设置颜色或覆盖RenderControl()。注意,如果您愿意,可以使用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;
}
对于枚举,它应该在label类外部还是内部声明?我在control类内部定义了我的,因为它实际上只由一个控件使用。因此,如果我想对多个控件使用这四种颜色,可以在外部定义它吗?另外,你能告诉我如何使用Rgb颜色而不是CSS颜色吗?我以前没有用过CSS。是的,你可以在任何地方定义它们。至于指定颜色,枚举值是您自己的发明,因此您必须在某个地方指定“真实”颜色(无论是CSS还是在您的控件类中)。要使用FromArgb(),请替换
this.CssClass=“”代码>带有this.ForeColor=Color.FromArgb()代码>谢谢你的帮助!已接受:)
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;
}