2012-09-14 22 views
0

所以我試圖教自己使用VB.net進行面向對象的編程,雖然我有一些基本的經驗,但我覺得我正在做一些非常錯誤的事情。在VB.net中的表單之間的交換

我的應用程序中有兩個可見屏幕(表單),我將其稱爲screen1和一個「遊戲」屏幕,我將其稱爲screen2,「選擇您的難度」屏幕。

  1. 我創建的是,當應用程序已內的Main()我生成屏蔽1和畫面2(這兩種形式)裝載

  2. 從運行的主()類。

  3. Screen1包含兩個按鈕。點擊後,他們將隱藏當前屏幕,顯示屏幕2,並根據所選按鈕設置難度來開始遊戲。

跳到Form類後,我不能再引用Main(),在那裏我可以關閉一個表單並輕鬆打開另一個表單。

所以問題是這樣的。關於正確的面向對象的設計。什麼是最廣泛接受的方式來改變屏幕並開始遊戲運行?

我不需要代碼片段或任何東西,我只需要一個基本的解釋應該怎麼做。

回答

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 
+1

非常,非常好,在兩個方面很好地解釋了沒有減。而不是一盎司的精英主義,愛它:)。 –