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。