Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.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# 将颜色保存到视图状态_C#_Asp.net_Viewstate - Fatal编程技术网

C# 将颜色保存到视图状态

C# 将颜色保存到视图状态,c#,asp.net,viewstate,C#,Asp.net,Viewstate,我有一个自定义控件,它有一个覆盖所有其他控件的面板。控件处于编辑模式和正常两种状态之一。在编辑模式下,我希望控件具有不同背景色的选项 我有: 在预渲染中: Panel1.BackColor = EditMode ? BackEditColor : BackColor; 以及控件属性: [Bindable(true)] [Category("Misc")] [Description("The background color.")] [DefaultValue("white")] [Locali

我有一个自定义控件,它有一个覆盖所有其他控件的面板。控件处于编辑模式和正常两种状态之一。在编辑模式下,我希望控件具有不同背景色的选项

我有:

在预渲染中:

Panel1.BackColor = EditMode ? BackEditColor : BackColor;
以及控件属性:

[Bindable(true)]
[Category("Misc")]
[Description("The background color.")]
[DefaultValue("white")]
[Localizable(true)]
public Color BackColor
{
    get { return Color.FromName(Convert.ToString(ViewState["BackColor"] ?? "white")); }
    set { ViewState["BackColor"] = value.Name; }
}

[Bindable(true)]
[Category("Misc")]
[Description("The edit-mode background color.")]
[DefaultValue("#FFFFCC")]
[Localizable(true)]
public Color BackEditColor
{
    get { return Color.FromName(Convert.ToString(ViewState["BackEditColor"] ?? "#FFFFCC")); }
    set { ViewState["BackEditColor"] = value.Name; }
}
我可以通过控件的属性毫无问题地设置颜色,但它们仅在渲染时显示为白色。如何保存/读取以查看颜色状态?

如何:

public Color BackColor
{
    get { return (Color)(ViewState["BackColor"] ?? Color.White); }
    set { ViewState["BackColor"] = value; }
}
Color.FromName(“#FFFFCC”)不起作用,因为它只适用于预定义的名称,如“black”


您可以简单地将颜色对象本身置于viewstate中。

您是否验证了调用了
Pre\u Render
方法?谢谢Magnus-我自己刚刚想到了这一点,对于默认的BackEditColor,我使用了Color.FromName(“#FFFFCC”)。否,您需要使用ColorTranslator实现这一点:
ColorTranslator.FromHtml(“#FFFFCC”)设置名称,但不设置实际颜色。这就造成了你的问题。我尝试了int redPart=Color.FromName(“#FFFFFFFF”).R;这将返回0而不是255。