0

所以我正在尝试使用 VB.net 自学面向对象编程,虽然我有一些基本的经验,但我觉得我做的事情非常错误。

我的应用程序有两个可见屏幕(表单),一个“选择您的难度”屏幕,我将其称为 screen1,一个“游戏”屏幕,我将其称为 screen2。

  1. 我创建了一个在应用程序加载时运行的 Main() 类

  2. 从 Main() 我生成 screen1 和 screen2 (两种形式)。

  3. Screen1 有两个按钮。单击时,他们将隐藏当前屏幕,显示屏幕 2,并根据选择的按钮以设定的难度开始游戏。

进入 Form 类后,我无法再引用 Main(),我可以在其中轻松关闭一个表单并打开另一个表单。

所以问题是这样的。关于正确的面向对象设计。更改屏幕和开始运行游戏的最广泛接受的方式是什么?

我不需要代码片段或任何东西,我只需要一个关于应该如何完成的基本解释。

4

1 回答 1

2

当您从Main入口点方法中显示表单时,您必须调用Application.Run. Main当您这样做时,在关闭表单之前,执行不会继续到方法中的下一行。例如,您可以在第一个表单关闭后立即显示第二个表单,如下所示:

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

然而,这通常不是这样的事情。通常,您只会Application.Run在第一个上调用一次,然后该表单会显示第二个。但是,如果您这样做,您必须确保第一个表单在您希望程序结束之前不会关闭。因此,与其关闭 screen1,不如将其隐藏起来。例如:

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

然后,Screen1可以有一个事件处理程序来观察何时Screen2关闭并重新显示自身或在该点关闭自身。或者,如果合适,您可以显示Screen2为一个对话框窗口,这意味着在第二个屏幕关闭之前,该方法不会继续执行,例如:

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 回答