Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用enum for text color限制自定义控件的选项_C# - Fatal编程技术网

C# 如何使用enum for text color限制自定义控件的选项

C# 如何使用enum for text color限制自定义控件的选项,c#,C#,现在我需要为一个c#项目创建一个自定义控件,主要的一点是我想创建一个控件,在这里我可以通过下拉菜单使用控件属性更改文本颜色。所以我想限制什么颜色可以选择。现在,我有四个独立的颜色标签,但我需要一个带有选项的标签,可以从单个属性更改颜色。颜色是使用RGB值预定义的。这是现有的标签代码,如何将其制作成一个具有多个颜色选项的标签 这是现有的标签代码。 感谢您的帮助。您可以使用包含所需四种颜色的公共枚举定义自己的自定义属性。然后,在渲染控件时,可以相应地设置前景色 枚举: 自定义属性: [Bindabl

现在我需要为一个c#项目创建一个自定义控件,主要的一点是我想创建一个控件,在这里我可以通过下拉菜单使用控件属性更改文本颜色。所以我想限制什么颜色可以选择。现在,我有四个独立的颜色标签,但我需要一个带有选项的标签,可以从单个属性更改颜色。颜色是使用RGB值预定义的。这是现有的标签代码,如何将其制作成一个具有多个颜色选项的标签

这是现有的标签代码。
感谢您的帮助。

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

枚举:

自定义属性:

[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;
}