- - PR -
System.InvalidOperationException の初回例外とは
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-02-26 18:25
こんばんは。
1つお聞きします。 VB6.0のプロジェクトを2005にコンバートしましたら Private Sub Exit_Application() Dim frm As System.Windows.Forms.Form For Each frm In My.Application.OpenForms frm.Close() Next frm End Sub の部分で 'System.InvalidOperationException' の初回例外が mscorlib.dll で発生しました。 のエラーが発生します。 Formを全て閉じる処理を行いたいのですが どのような対応をとるとよいのでしょうか? ご教授宜しくお願いします。 | ||||||||
|
投稿日時: 2008-02-26 19:12
おそらく、発生したのはこのエラーでしょう。
IEnumerator.MoveNext メソッドより:
| ||||||||
|
投稿日時: 2008-02-26 19:37
きっとClose()により、OpenFormsコレクションに変更があった為だと思います。
下記のようにすれば、全フォームを閉じれると思います。
| ||||||||
|
投稿日時: 2008-02-27 09:19
回答ありがとうございます。
申し訳ありません、 Application.Exit()というのを見つけましたが これでは、どうなのでしょうか? | ||||||||
|
投稿日時: 2008-02-27 10:03
Application.Exit()でも同じように全フォームを閉じる事が出来ます。
ただ、一つ考慮しなければならないことが FormがClosingイベントにてキャンセルした場合です。 例えばFormが@〜Bまで開いていた場合に Application.Exit()を呼び出し、@から順に閉じようとした場合に AがClosingにてキャンセルを返した場合、@〜Bは閉じません。 (Application.Exit()はキャンセルされた時点で処理が終わります。) 私の提示コードも、キャンセルされた場合、無限ループに陥ります。 (ループ中にキャンセルされなくなれば、以後閉じる処理を続行します) どちらにしろ、Closingイベントをキャンセルされた場合を考慮する必要が在ると思います。 [ メッセージ編集済み 編集者: くまっち 編集日時 2008-02-27 10:12 ] | ||||||||
|
投稿日時: 2008-02-27 10:44
大変丁寧な回答ありがとうございました。
|
1