- - PR -
カスタムコントロールのプロパティの保持について
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-12-11 12:05
はじめまして。
TextBoxを継承したカスタムコントロール ・ReadOnlyがTrueの場合は背景色を青Falseの場合は白にする。 という物を作りたいと考えているのですが、 作成してみて、Web画面上でラジオボタンの選択切り替えのPostBack時に、 ラジオボタンの選択値で判断して、カスタムコントロールのReadOnlyを切り替えると、 背景色は切り替わるのですが、入力されていたテキストが消えてしまいます。 (overrideしたRenderメソッドの中でウォッチすると Textプロパティが空になってしまっています。 逆にRenderメソッドをoverrideしないと入力文字は保持出来て、 ReadOnlyもTrueになるのですが、背景色が切り替わりません。 −−−−−−−−−−−−−−−−−−−−−−−−−−−− (今、手元にソースが無いので、記述違いがあるかもしれません。) private Color BACKCOLOR; public override BackColor { set { if(this.ReadOnly) { BACKCOLOR = Color.Blue; } else { BACKCOLOR = Color.White; } return BACKCOLOR; } get { BACKCOLOR = value; } } public override Text { set { return (string) ViewState{"Text"}; } get { ViewState{"Text"} = value; } } −−−−−−−−−−−−−−−−−−−−−−−−−−−− 入力されたテキストを保持したまま、 ReadOnlyの切り替えることによって、同時に背景色も切り替わる コントロールを作成できるでしょうか。 どなたかご教授いただけませんでしょうか。 よろしくお願いいたします。 [ メッセージ編集済み 編集者: まさや 編集日時 2004-12-11 21:00 ] | ||||
|
投稿日時: 2004-12-11 14:34
ReadOnlyChangedイベントで背景色を変えるのは駄目ですか?
| ||||
|
投稿日時: 2004-12-11 18:12
Textプロパティをオーバーライドする必要はないのでは?また、BackgroundColorの取得でTextプロパティにセットされているであろう値を返すというのも変ですよね。ん?返してないやん。
それから、ViewStateにセットするのは、それ専用のイベントハンドラか、メソッドがあったはず。 あとはLoadイベントハンドラの「初期化するコードをここに書きます」という"嘘"に惑わされず、Initイベントハンドラで初期化するようにすればいいはず。 _________________ | ||||
|
投稿日時: 2004-12-11 21:14
> Textプロパティをオーバーライドする必要はないのでは?また、BackgroundColorの
> 取得でTextプロパティにセットされているであろう値を返すというのも変ですよね。 > ん?返してないやん。 大変失礼いたしました。 記述誤りでしたので、修正いたしました。 > それから、ViewStateにセットするのは、それ専用のイベントハンドラか、 > メソッドがあったはず。 SaveViewStateやLoadViewStateの事でしょうか。 それらも使う形で色々と書いてみたのですが、 どうしても上手く出来ませんでした。 (メソッドの記述の仕方が誤っていたのかも知れませんが。) > あとはLoadイベントハンドラの「初期化するコードをここに書きます」という > "嘘"に惑わされず、Initイベントハンドラで初期化するようにすればいいはず。 コントロールクラス内のInitイベントハンドラ内でという事でしょうか? また、何について初期化すればよいのでしょうか。 初歩的な質問ばかりで申し訳ありませんが、 よろしくお願いいたします。 | ||||
|
投稿日時: 2004-12-12 19:47
これだけでいけません?baseが、ちと不安。 あと、Color.Whiteではなく、システム設定のカラーを使うべきかと。 _________________ Microsoft MVP for Visual Developer - ASP/ASP.NET (Oct. 2004 - Sept. 2005) [ メッセージ編集済み 編集者: Jitta 編集日時 2004-12-12 19:51 ] | ||||
|
投稿日時: 2004-12-13 14:15
Jitta様にお教え頂きました記述により、解決いたしました。
ありがとうございました。 > あと、Color.Whiteではなく、システム設定のカラーを使うべきかと。 ご指摘ありがとうございます。 以上で失礼致します。 本当にありがとうございました。 |
1