0

プログラムに複数のフォームがあります。メニュー フォーム (frmMenu) には、メニュー フォームを非表示にし、対応するフォーム (フォーム frmXyl) を表示するボタンが含まれています。フォーム frmXyl を閉じると非表示になり、フォーム frmMenu が表示されます。

'フォーム frmMenu ボタンクリックイベント

    'Hide the form frmMenu
     Me.Hide()
    'Show the form frmXyl
     frmXyl.Show()

'これはフォーム frmXyl フォーム クローズ イベントです

    'Hide the form frmXyl
    Me.Hide()
    'Show the form frmMenu
    frmMenu.Show()

プログラムを起動し、ボタンをクリックして frmMenu を非表示にし、frmXyl を表示します。次に、frmXyl を閉じて frmXyl を非表示にし、frmMenu を表示します。

ここで、ボタンをクリックして frmXyl を表示し、frmMenu を非表示にすると、もう一度エラーが発生します。

エラーは次のとおりです: フォームの作成中にエラーが発生しました。詳細については、Exception.InnerException を参照してください。エラー: 基礎となる RCW から分離された COM オブジェクトは使用できません。

以前は問題なくフォームで表示と非表示を使用していましたが、これに対する解決策を事前に教えていただきありがとうございます。

4

1 に答える 1

1

フォームを非表示にするだけでは、フォームが破棄されるのを防ぐには不十分です。また、フォーム オブジェクトを存続させるには、FormClosing イベントで e.Cancel = True を設定する必要があります。e.CloseReason に注意を払う必要があります。たとえば、Windows がシャットダウンしている場合やユーザーがプログラムを終了しようとした場合に、閉じて新しいフォームを表示するのを止めたくありません。

于 2012-09-05T13:33:07.380 に答える