- ベストアンサー
C#コンストラクタが2回動く
C#でユーザーコントロールを作成しますが、そのコントロールをフォームに配置時と実行時二回コンストラクタが動くのですが、これを実行時のみ一回にできませんか。お願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
そういうものです。 ユーザーコントロールのインスタンスは、実行時だけでなく、デザイン時(配置時)にも、フォーム上に生成されます。 (そうしないと、独自なユーザーコントロールの見た目を、デザイン画面(配置先のフォーム上)に反映させることができません) どちらのモードで実行しているかは「DesignMode」で判別できますので、 実行時だけ処理したい(配置時に処理したくない)ものについては、コンストラクタ中などで、 --- if (!DesignMode) { // デザイン時に実行したくない処理 } --- のようなコードを書くしかないでしょう。 http://msdn.microsoft.com/ja-jp/library/system.componentmodel.component.designmode%28v=vs.110%29.aspx
その他の回答 (1)
- axuaxua
- ベストアンサー率36% (82/223)
回答No.1
C#はいじった事がないですが、クラスの継承や明示的にコンストラクタを呼び出してないか確認してください。 応急処置としてはstaticな変数で実行したか記憶させ、実行していたら処理をスキップさせれば良いと思います。
質問者
お礼
ありがとうございます。
お礼
そういう仕組みだったのですね、解決しました。ありがとうございます。