- - PR -
カスタムコントロールのプロパティに勝手に初期値が設定されてしまう。
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-02-24 21:08
いつもお世話になっています。
VB.NETで開発をしているものです。 コントロールを継承したカスタムコントロールを作成していて、さらにColorクラスを受け渡しするオリジナルのプロパティ(MyColor(仮称))を追加しています。 で、このカスタムコントロールを実際にFormに貼り付けてみると、デザイナ自動生成のロジック(InitializeComponentメソッド)でMyColorプロパティに勝手に「Color.Empty」が設定されてしまうのです。 このMyColorプロパティにはカスタムコントロールのコンストラクタである色が設定してあるのにこの"Empty"で上書かれてしまうのです。 この勝手に書かれる 「Me.MyControl.MyColor = System.Drawing.Color.Empty」 というロジックが書かれないようにする方法はないのでしょうか? デザイナのプロパティウィンドウからプロパティを変更すると、初期値以外の設定値にした場合だけInitializeComponentに書かれますよね。 あのあたりにヒントがあると思っているのですが... | ||||||||
|
投稿日時: 2005-02-24 21:14
こんにちは、じゃんぬねっと です。
DefaultValue 属性の設定はどうなんでしょうか? _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2005-02-24 21:21
早速のレス、ありがとうございます。じゃんぬねっとさん。
DefaultValue属性には何も設定していません。 "白"とか"黒"とか決まっているならば設定できると思うのですが、 カスタムコントロールで設定している色も実はapp.configから取得しているのです。 属性タグの中って変数的なものを設定することってできますか? [ メッセージ編集済み 編集者: まるひろ 編集日時 2005-02-24 21:46 ] | ||||||||
|
投稿日時: 2005-02-24 22:41
動的な場合はShouldSerializeMyPropertyを使用します。こんな感じ。
| ||||||||
|
投稿日時: 2005-03-01 13:05
yaさん、ありがとうございます。
お返事が遅くなりました。 見事解決です。 ShouldSerialize〜〜〜っていうのは、 デザイナが自動生成コードを書く前にプロパティがデフォルト値と 一致するかの判定に用いるメソッドなんですね。 大変勉強になりました。 ありがとうございました。 |
1