電子書籍の厳選無料作品が豊富!

C#でユーザーコントロールを作成しますが、そのコントロールをフォームに配置時と実行時二回コンストラクタが動くのですが、これを実行時のみ一回にできませんか。お願いします。

A 回答 (2件)

そういうものです。



ユーザーコントロールのインスタンスは、実行時だけでなく、デザイン時(配置時)にも、フォーム上に生成されます。
(そうしないと、独自なユーザーコントロールの見た目を、デザイン画面(配置先のフォーム上)に反映させることができません)

どちらのモードで実行しているかは「DesignMode」で判別できますので、
実行時だけ処理したい(配置時に処理したくない)ものについては、コンストラクタ中などで、
---
if (!DesignMode) {
// デザイン時に実行したくない処理
}
---
のようなコードを書くしかないでしょう。
http://msdn.microsoft.com/ja-jp/library/system.c …
    • good
    • 0
この回答へのお礼

そういう仕組みだったのですね、解決しました。ありがとうございます。

お礼日時:2013/01/23 23:19

C#はいじった事がないですが、クラスの継承や明示的にコンストラクタを呼び出してないか確認してください。



応急処置としてはstaticな変数で実行したか記憶させ、実行していたら処理をスキップさせれば良いと思います。
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2013/01/23 23:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!