コード上でForm上に動的に追加したコントロールの扱い

タグの編集
投稿者 バビ男  (社会人) 投稿日時 2017/7/12 17:21:29
こんにちは!
条件に応じてForm上のコントロールの数などを変えたいので、
デザイナを使わず、FormのLoadイベント等のコードでForm上にコントロールを動的に追加する場合、
そのFormを閉じるとき、そのコントロールはコード上でDisposeしなくちゃダメですか?
(例えば、Formを開いたり閉じたりを繰り返すと問題が出る?)
ちなみに、VB2013です。
よろしくお願いします!
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2017/7/12 19:20:29
> そのFormを閉じるとき、そのコントロールはコード上でDisposeしなくちゃダメですか?

Form 上に貼ったままフォームが閉じられれば、子コントロールも一緒に Dispose されます。

> (例えば、Formを開いたり閉じたりを繰り返すと問題が出る?)

フォームを閉じる前にコントロールを取り除く場合には、Dispsoe が必要です。
Controls に対して Clear メソッドや Remove / RemoveAt メソッドを使う場合は、
Dispose し忘れにご注意ください。
投稿者 バビ男  (社会人) 投稿日時 2017/7/13 09:46:57
魔界の仮面弁士さま、ありがとうございます!
ちょうど、ボタンクリックでForm上のコントロールの増減を行っている所があり、
コントロールを減らす場合はRemoveしたままでした。
少なくともRemoveしたコントロールは再利用していないので、
RemoveしたコントロールはDisposeするようにします。
勉強になりました!ありがとうございました!