• ベストアンサー

C#コンストラクタが2回動く

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

質問者が選んだベストアンサー

  • ベストアンサー
  • mtaka2
  • ベストアンサー率73% (867/1179)
回答No.2

そういうものです。 ユーザーコントロールのインスタンスは、実行時だけでなく、デザイン時(配置時)にも、フォーム上に生成されます。 (そうしないと、独自なユーザーコントロールの見た目を、デザイン画面(配置先のフォーム上)に反映させることができません) どちらのモードで実行しているかは「DesignMode」で判別できますので、 実行時だけ処理したい(配置時に処理したくない)ものについては、コンストラクタ中などで、 --- if (!DesignMode) { // デザイン時に実行したくない処理 } --- のようなコードを書くしかないでしょう。 http://msdn.microsoft.com/ja-jp/library/system.componentmodel.component.designmode%28v=vs.110%29.aspx

noname#189001
質問者

お礼

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

その他の回答 (1)

  • axuaxua
  • ベストアンサー率36% (82/223)
回答No.1

C#はいじった事がないですが、クラスの継承や明示的にコンストラクタを呼び出してないか確認してください。 応急処置としてはstaticな変数で実行したか記憶させ、実行していたら処理をスキップさせれば良いと思います。

noname#189001
質問者

お礼

ありがとうございます。

関連するQ&A