2012-12-10 56 views
3

如何重新加載輔助表單退出時的主窗體?例如,如果frmMain是主窗體,並且隱藏了加載另一個稱爲GenerateNumbers的窗體,那麼當用戶退出GenerateNumbers時如何獲得frmMain?在Visual Basic中退出時打開和關閉窗體?

+0

您是否需要在關閉時將一些信息從GenerateNumbers窗體移動到主窗體? – Fabio

+0

否。在這種情況下,每個表單都有不同的用途,不需要保存工作。更具體地說,這是一個樂透號碼發生器。 – Brandon

+1

項目+屬性,應用程序選項卡,關閉模式=上一個表格關閉時。現在,您只需調用Show()即可顯示新窗體並關閉不想激活的窗體。 –

回答

1

如果你調用ShowDialog的次要形式,那麼你會做你的主窗體可見後第二形狀從ShowDialog方法返回。

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click 
    Dim frm2 As Form2 = New Form2 
    Me.Hide() 
    frm2.ShowDialog() 
    Me.Show() 
End Sub 
+0

我的代碼調用它是這樣的... Dim frmMain As frmMain() Me.Hide() GenerateNumbers.Show() frmMain = Nothing – Brandon

+0

抱歉,我不知道如何使用這裏的代碼功能。 – Brandon

+0

@Brandon不要設置frmMain爲空,並使用ShowDialog而不是Show。你的創業形式是?如果是這樣,你爲什麼再次創建它? –

0

如果您將輔助窗體顯示爲模態,應該很容易。把這個在你使用的任何活動,顯示第二形狀:

frmMain.Visible = False 
frmGenerateNumbers.ShowDialog() 
frmMain.Visible = True 
3

最好的方法是添加一個事件處理程序到子窗體的Closing事件。這樣,主窗體將在子窗體關閉時收到通知,然後它可以重新顯示自己。例如:

AddHandler frmChild.Closing, AddressOf ChildClosing 
frmChild.Show() 
Me.Hide() 

'.... 

Private Sub ChildClosing(sender As Object, e As EventArgs) 
    RemoveHandler CType(sender, Form).Closing, AddressOf ChildClosing 
    Me.Show() 
End Sub 

正如其他人所說,如果你表現出與ShowDialog方法子窗體,這是容易得多。事實上,如果你這樣做,那麼就實在沒有理由隱藏的主要形式,你可以通過在主窗體到對話框作爲所有者:

frmChild.ShowDialog(Me) 

提示:如果不隱藏主表單,將子表單的起始位置屬性設置爲主體的中心。

或者,您可以給主窗體提供一個引用,以便在關閉時使主窗體可見,但我會說這是最不理想的選項。

相關問題