- - PR -
プロパティ値が規定値かどうかの判定方法
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-08-27 09:10
プロパティ値が規定値であるかを、プログラム実行中に条件判定したいと思っています。
例えば、TextBox の Colorプロパティ の規定値(DefaultValue)は Window ですが、 規定値 のままの場合は、Enabled の状態に応じて背景色が変化します。 (一般的な環境では、白と灰色) それに対して、規定値である Window を明示的にセットされた場合 (プロパティウィンドウで言うと太字の状態)には、 Enabled の状態が変化しても背景色が変わりません。(一般的な環境では常に白) プログラム中で TextBox の色を変更させてから元の色に戻したい場合があるのですが、 変更する前の色を変数に保持する際に"規定値"かどうかを判定したいと思っています。 ※規定値に戻す方法に関しては、BackColor に Color.Empty を セットする事で実現できました。 | ||||||||
|
投稿日時: 2006-08-27 09:42
あるインスタンスの属性を取得するということであれば、
これは... (;^-^) よく考えてみてください。 # Color プロパティは BackColor プロパティのことだと思いますが... _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-08-27 17:18
じゃんぬねっとさん、ご返答ありがとうございます。
その通りでした。BackColor の事です。(*^-^*) 教えて頂いた方法を試みていまして、次の様な事だと思うのですが...
defaultValue には、結果 null が返ってきてしまいます。 何か間違った事をしていると思い、調査しているところです。 ちなみに、上記の方法はプロパティの規定値を取得する事になりますよね? (これも新たな知識となり大変有難いと思っています) 私の質問文が分かりにくかったかと思いますが、 BackColor プロパティの現在の値が、規定値のままの "Window" であるのか、 ユーザーがセットした "Window" であるのかを知りたかったのです。 (私の誤解で、その点が伝わっていたらすみません) 同じ "Window" でも、規定値のままか、ユーザーがセットしたかで、 Enabled が変化した際の動作(背景色の変化)に違いがある様ですので、 そのどちらであるかを取得したいと思っております。 | ||||||||
|
投稿日時: 2006-08-27 18:06
そっちじゃなくて、PropertyDescriptor.ShouldSerializeValueメソッドを使用すること。動的に判定する必要があるプロパティの存在があるからShouldSerializePropertyメソッドの存在も忘れてはいけない。
細かい動作はMSDNの該当項目読んでください。 # 以下追記。
こういう実装も「あり」なのです。 [ メッセージ編集済み 編集者: ya 編集日時 2006-08-27 18:18 ] [ メッセージ編集済み 編集者: ya 編集日時 2006-08-27 18:20 ] | ||||||||
|
投稿日時: 2006-08-28 00:09
BackColorChangedイベントでBackColorプロパティの値が変更されたかどうかを見張ればいいのでは?
| ||||||||
|
投稿日時: 2006-08-28 00:27
( ´_ゝ`)y━; モフー。
| ||||||||
|
投稿日時: 2006-08-28 07:24
yaさん、souさん、ありがとうございます。
皆さんのご意見を参考に、いろいろ試してみたいと思います。 souさんが言われている、BackColorChanged については、 ごもっともなご意見だと思いましたが、 ただ、デザイン時に変更されたかどうかは拾えないかとも思うのですが、 確認してみたいと思います。 | ||||||||
|
投稿日時: 2006-08-28 09:49
本題とは無関係ですが、(~~;
Default vakueは ×規定値 ○既定値 |
1