Сохранить цвет в ViewState - PullRequest
0 голосов
/ 25 июня 2011

У меня есть пользовательский элемент управления с панелью, оборачивающей все остальные элементы управления. Элемент управления находится в одном из двух состояний: режим редактирования и нормальный. В режиме редактирования я хочу, чтобы элемент управления имел опцию другого цвета фона.

У меня есть:

В 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 цвета?

Ответы [ 2 ]

1 голос
/ 25 июня 2011

Color.FromName ("# FFFFCC") не будет работать, потому что он работает только с предопределенными именами, такими как 'black'.

Вы можете просто поместить сами объекты Color в смотровое состояние.

1 голос
/ 25 июня 2011

Как насчет просто:

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