将颜色保存到ViewState

本文关键字:ViewState 保存 颜色 | 更新日期: 2023-09-27 18:00:33

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

我有:

在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的颜色?

将颜色保存到ViewState

怎么样:

public Color BackColor
{
    get { return (Color)(ViewState["BackColor"] ?? Color.White); }
    set { ViewState["BackColor"] = value; }
}

颜色。FromName("#FFFFCC")将不起作用,因为它只适用于预定义的名称,如"black"。

您可以简单地将"颜色"对象本身置于视图状态。