- - PR -
カスタムコンポーネントについて
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-09-14 11:05
いつもお世話になっております。
現在、VB.NET(.NET Framework1.0、VS.NET 2002)でC/Sのシステムを構築しております。 既存のSystem.Windows.Forms以下のコンポーネントを継承してコンポーネントを作成しています。 継承したコンポーネントの中ではプロパティの変更などを行なっています。 (例えば、DateTimePickerならCustomFormatを変更するとか・・・) ここで下記のことが問題になりました。 作成したコンポーネントをフォーム上に貼り付けると、コンポーネントの内部で変更した プロパティの情報がフォームのクラス内に記述されてしまうのです。 ということは、もしコンポーネント側でプロパティを修正しても各フォームにはその情報が 反映されないって事になります。 (順番的にフォームの初期化処理の方が後から起動されるので・・・) 同様の問題なのですが自作の継承して作成したコンボボックスのコンストラクタの中で アイテムの追加を行なうと、その情報までもがそのコンポーネントを使用しているフォームに 記述されてしまいます。 コンストラクタでコーディングしなければ良いと言われればそれまでなのですが、 そういうものなのでしょうか? これって、オブジェクト指向言語のIDEとしては致命的な気がするのですが・・・ もしかすると、VS.NETのどこかの設定を変えると問題が解決されるのでしょうか?? [ メッセージ編集済み 編集者: Hodgkin 編集日時 2004-09-14 11:19 ] | ||||||||
|
投稿日時: 2004-09-14 15:47
Hodgkinさん、こんにちは。
このあたりの仕様についてキチンと説明しているドキュメントを真面目に探していないので何とも言えませんが、コントロールの初期化処理については、以下のような方法で如何でしょう。
また、場合によってはカスタムデザイナやカスタムエディタが必要になるかも知れませんね。 | ||||||||
|
投稿日時: 2004-09-15 14:56
久しぶりの投稿です。
System.ComponentModel.DesignerSerializationVisibilityAttribute 上記がたぶん解決策になると思います。 | ||||||||
|
投稿日時: 2004-09-16 10:40
コンストラクタでコーディングして設定した値はクラスのプロパティの初期値になります。
この初期値を InitializeComponent() の中に入れないようにするには、 DefaultValueAttribute クラス を使います。 _________________ えムナウ Microsoft MVP for Visual Developer - C#,2005/01-2007/12 えムナウのプログラミングのページ Blog1 Blog2 |
1