【问题标题】:Swap between forms in VB.net在 VB.net 中的表单之间交换
【发布时间】:2012-09-14 19:55:55
【问题描述】:

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

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

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

  2. 我从 Main() 中生成 screen1 和 screen2(两个表单)。

  3. 屏幕 1 有两个按钮。点击后,它们会隐藏当前屏幕,显示屏幕2,并根据选择的按钮以设定的难度开始游戏。

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

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

我不需要代码 sn-ps 或任何东西,我只需要对应该如何做的基本解释。

【问题讨论】:

    标签: vb.net forms oop swap methodology


    【解决方案1】:

    当您在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
    

    【讨论】:

    • 非常非常好,并且在两个方面都得到了很好的解释。而不是一盎司的精英主义,喜欢它:)。
    猜你喜欢
    • 2011-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-29
    • 1970-01-01
    相关资源
    最近更新 更多