次のコードを使用して、アプリケーションで現在開いているすべてのフォームを反復処理し、クリーンアップの一部としてメインフォームを除いてそれらを閉じようとしています。
Dim openForms As Windows.Forms.FormCollection = Application.OpenForms
For Each frm As Windows.Forms.Form In openForms
If frm.Name.ToString() <> "FrmMainNew" Then
frm.Close()
End If
Next
ただし、実行すると、中にあったエントリが削除され、コレクションのサイズが変更されるInvalidOperationException
ため、取得しています。私は明らかに何か間違ったことをしているので、誰かがここで問題を指摘できれば、それは素晴らしいことです。そうでなければ、このようなことをする別の方法はありますか?frm.Close()
openForms