• ベストアンサー

プログラムの実行時にフォーム上のコントロールを消したい

WinXP、VB.NET 2005で開発しております。 プログラムの実行時に フォーム上のすべてのコントロールを消したいのですが、 全部削除されません。 削除する部分のコードは以下の通りです。  For Each objcontrol As Control In Me.Controls   objcontrol.Dispose()   objcontrol = Nothing  Next デバッグで追っていくと、 いくつか実行した後にループを抜けてしまいます。 すべて消す方法をご存じの方、教えて下さい。 お願いいたします。

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

  • ベストアンサー
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.1

For Each を使いながら、該当オブジェクトを削除するからでは? コントロールに限らず、VBに限らず、こういうコードは危険です。 For I = Me.Controls.Count - 1 To 0 Step -1   Me.Controls(I).Dispose(); Next このようにしては如何でしょう?

mohmori77
質問者

お礼

ありがとうございます。 一発で解決しました。 頂いたアドバイスでなぜ駄目だったかもわかりました。 とても助かりました。