1

以下のコード スニペットがあります。

'Handle level specific properties
Select Case ScoreCard.CurrentDifficulty
    Case 1
        intImageCount = 2 'This is the number of images to show at any given time on screen +1

        'debug
        ScoreCard.CurrentDifficulty = 6
    Case 2
        intImageCount = 3 'This is the number of images to show at any given time on screen +1
    Case 3
        intImageCount = 5 'This is the number of images to show at any given time on screen +1
    Case 4
        intImageCount = 2  'This is the number of images to show at any given time on screen +1
    Case 5
        intImageCount = 5 'This is the number of images to show at any given time on screen +1
    Case 6
        frmLevel3_HouseOfMirrors.Show()
        Me.Close()
        Return
End Select

When case 6is execute が実行されfrm3_HouseOfMirrors.Show()、新しいフォームが開きます。Me.close同様に実行されますが、私の問題は、スクリプトがリターン行に到達することです。me.Close()現在のフォームでのコードの実行をすべて停止し、メモリから自分自身をアンロードすることを想定していませんか?

4

3 に答える 3

2

frmLvl3_HouseOfMirrors.ShowDialog()の代わりに を呼び出すだけで.Show()、新しいフォームが閉じられるまでコードの実行が停止します。

または、残りのコードの実行をキャンセルしたい場合は、Exit命令を試してください。コードの実行を停止しSubなかったため、終了したいことを検出して this の外に追加する必要があります。.Close()

于 2013-02-22T08:13:52.820 に答える
1

いいえ、「close」メソッドはフォームを閉じるだけですが、プログラムの実行は続行されます。フォームが閉じられるまでコードの実行を停止したい場合は、フォームをモーダルにすることができます。

VBA では、次のようになります: frmLevel3_HouseOfMirrors.Show vbModal

于 2013-02-22T07:03:22.727 に答える
0

me.Close()現在のフォームでのコードのすべての実行を停止し、それ自身をメモリからアンロードすることを想定していませんか?

いいえClose、まさにそのとおりです。フォームの視覚的でインタラクティブな表現を閉じます。1コードの実行には直接影響しません。ただしForm_Closing、 and thenForm_Closedが呼び出されることを確認します。ただし、残りのコード実行は影響を受けません。特に、現在のメソッドは正常に実行されます。その後、フォーム上の他のメソッドが必要に応じて呼び出される場合と呼び出されない場合があります (前述のように、ClosingandClosed 呼び出されます)。


1ShowDialogそして、はい、フォームがプレーンではなく経由で表示されない限り、フォームのリソースを解放しますShow

于 2013-02-26T10:38:42.723 に答える