简体   繁体   English

将颜色保存到ViewState

[英]Save Color to ViewState

I have a custom control with a panel wrapping all the other controls. 我有一个自定义控件,面板包含所有其他控件。 The control is in one of two states, edit-mode and normal. 控件处于两种状态之一:编辑模式和正常状态。 When in edit-mode I want the control to have the option of a different background color. 在编辑模式下,我希望控件具有不同背景颜色的选项。

I have: 我有:

In Pre_Render: 在Pre_Render中:

Panel1.BackColor = EditMode ? BackEditColor : BackColor;

And the control properties: 和控制属性:

[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; }
}

I can set the colors with no problem via the control's properties, but they only show as white on render. 我可以通过控件的属性设置颜色没有问题,但它们只在渲染时显示为白色。 How should I be saving/reading to ViewState the colors? 我应该如何保存/读取ViewState的颜色?

How about just: 怎么样:

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

Color.FromName("#FFFFCC") will not work, because it only works on predefined names like 'black'. Color.FromName(“#FFFFCC”)将不起作用,因为它仅适用于预定义的名称,如“黑色”。

You can simply put the Color objects themselves in the viewstate. 您可以简单地将Color对象本身放在viewstate中。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM