2011-06-24 14 views
0

私は他のすべてのコントロールをラップしたパネルでカスタムコントロールを持っています。コントロールは、編集モードと通常の2つの状態のいずれかにあります。編集モードでは、コントロールに別の背景色のオプションが必要です。ViewStateにカラーを保存

私が持っている: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

'Pre_Render'メソッドが呼び出されていることを確認しましたか? – StriplingWarrior

答えて

1

どのようにちょうど約:

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

Magnusありがとうございました - 私はちょうどそれを考え出し、BackEditColorのデフォルトではColor.FromName( "#FFFFCC")を使いました。 –

1

Color.FromName( "#のFFFFCC")それが唯一の 'ブラック' などの定義済みの名前で動作するので、動作しません。

単純に、Colorオブジェクト自体をビューステートに置くことができます。

+0

実際には動作します - 試してください –

+0

いいえ、そのためにColorTranslatorを使う必要があります: 'ColorTranslator.FromHtml("#FFFFCC ");' – Magnus

+0

名前を設定しますが、実際の色は設定しません。そしてそれはあなたの問題を引き起こします。しようとしました_int redPart = Color.FromName( "#FFFFFFFF")。R; _ 255の代わりに0を返します。 –

関連する問題