- - PR -
継承コントロール作成時にプロパティ設定について
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-04-10 10:10
VS2003(C#)で開発を行っています。
コントロールを継承してカスタムコントロールを作成していますが、 その際にプロパティの初期値設定を行うために overrideでCreateControlsInstanceにてプロパティの設定を行っています。 現在はその方法で希望の動作ができていますが、 本当にその方法が正しいのかいまいち私の中で信用できません。 皆様は上記の要件の際にはどのような方法を採用されますでしょうか? ご意見よろしくお願い致します。 | ||||||||
|
投稿日時: 2006-04-10 10:20
初期値ならば、コンストラクタですね。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-04-10 11:23
私もこれ知りたい。コンストラクタでポトペタ対応できますか?
| ||||||||
|
投稿日時: 2006-04-10 17:02
DefaultValueAttribute かな?
http://msdn2.microsoft.com/ja-JP/library/system.componentmodel.defaultvalueattribute(VS.80).aspx | ||||||||
|
投稿日時: 2006-04-10 17:31
「既定値」と「初期値」は別物ですね。
「既定値」であれば、DefaultValue 属性を使用します。 この「既定値」と「初期値」が合致すると、InitializeComponent メソッドで、 その部分のコードが生成されない (プロパティ ウィンドウで太字書体にならない) です。 「初期値」はコンストラクタで、「規定値」はそのプロパティに属性を付与することで決定します。 # 返答先がどちらか明確でなかった為、書き直しました。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-04-10 17:35
すいません、初期値と既定値の区別が付いていませんでした。 既定値は初期値が指定されていなかった場合に使われる値 ってことかな・・・ | ||||||||
|
投稿日時: 2006-04-10 17:45
すみません、行き違いで書き直した後になってしまいました。
「既定値」は InitializeComponent メソッドで書かれるかどうかを決定するという意味での「既定の値」ですね。 日本語って難しいですね... うまく説明できません... 実際に、TextBox を継承してあるプロパティを override して、 DefaultValue 属性を設定してみるとわかりやすいと思います。 コンストラクタで、設定した DefaultValue と同じ値を設定した場合と、 そうでない場合で、Form 側の InitializeComponent メソッドの変化を見てください。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-04-10 23:30
考え方としては逆だと思うんですがどうでしょう。 既定値とは仕様としての値ですよね。 Boolean値のプロパティのヘルプを見るとわかりますが、「既定ではTrueです」などと書かれています。 使うほうが何もしなければその値で振る舞いをおこなうと。 なので、InitializeComponentうんぬんというのはあくまで結果としてのツールの挙動という方向性で考えたほうがよろしいかと。 |