我有一个自定义控件,其中包含所有其他控件的面板。控件处于两种状态之一:编辑模式和正常状态。在编辑模式下,我希望控件具有不同背景颜色的选项。
我有:
在Pre_Render中:
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; }
}
我可以通过控件的属性设置颜色没有问题,但它们仅在渲染时显示为白色。我应该如何保存/读取ViewState的颜色?
答案 0 :(得分:1)
如何:
public Color BackColor
{
get { return (Color)(ViewState["BackColor"] ?? Color.White); }
set { ViewState["BackColor"] = value; }
}
答案 1 :(得分:1)
Color.FromName(“#FFFFCC”)不起作用,因为它只适用于预定义的名称,如“黑色”。
您可以简单地将Color对象本身放在viewstate中。