0

ですから、私はVB.netを使ってオブジェクト指向プログラミングを学ぼうとしています。基本的な経験はありますが、ひどく間違ったことをしているように感じます。

私のアプリケーションには2つの表示画面(フォーム)があります。1つはscreen1と呼ぶ「難易度の選択」画面で、もう1つはscreen2と呼ぶ「ゲーム」画面です。

  1. アプリケーションがロードされたときに実行されるMain()クラスを作成します

  2. Main()内から、screen1とscreen2(両方のフォーム)を生成します。

  3. Screen1には2つのボタンがあります。クリックすると、現在の画面が非表示になり、screen2が表示され、選択したボタンに基づいて設定された難易度でゲームが開始されます。

Formクラスにジャンプした後、Main()を参照できなくなりました。ここで、1つのフォームを閉じて、別のフォームを簡単に開くことができます。

だから問題はこれです。正しいオブジェクト指向設計に関して。画面を変更してゲームの実行を開始するための最も広く受け入れられている方法は何ですか?

コードスニペットなどは必要ありません。必要なのは、実行方法の基本的な説明だけです。

4

1 に答える 1

2

エントリポイントメソッド内からフォームを表示するときはMain、を呼び出す必要がありますApplication.RunMainこれを行うと、フォームが閉じられるまで、メソッドの次の行に実行が続行されません。したがって、たとえば、最初のフォームを閉じた直後に2番目のフォームを次のように表示できます。

Sub Main()
    Application.Run(New Screen1())
    Application.Run(New Screen2())
End Sub

しかし、それは通常、そのようなことが行われる方法ではありません。通常、最初のフォームで1回だけ呼び出すApplication.Runと、そのフォームに2番目のフォームが表示されます。ただし、これを行う場合は、プログラムを終了するまで最初のフォームが閉じないようにする必要があります。したがって、screen1を閉じるのではなく、それ自体を非表示にする必要があります。例えば:

Class Screen1
    Private Sub ShowScreen2()
        Dim screen2 As New Screen2()
        Me.Hide()
        screen2.Show()
    End Sub
End Class

次に、Screen1イベントハンドラーを使用して、Screen2閉じたときに監視し、自分自身を再表示するか、その時点で自分自身を閉じます。または、必要に応じScreen2て、ダイアログウィンドウとして表示することもできます。これは、次のように、2番目の画面が閉じるまでそのメソッドで実行が続行されないことを意味します。

Class Screen1
    Private Sub ShowScreen2()
        Dim screen2 As New Screen2()
        Me.Hide()
        screen2.ShowDialog()
        Me.Show()
    End Sub
End Class
于 2012-09-14T11:55:55.530 に答える