2009-09-03 66 views
0

我正在VB.NET中開發一個WinForms應用程序,處理樣式數據集,當用戶點擊另一個集合的標籤時,它會通過對話框提示「您將離開此樣式預設以編輯另一個樣式。在這一個嗎?[是] [否]「VB.NET:如何在這種情況下關閉並重新打開對話框?

但是,我面臨的問題是,當用戶單擊任一選項,並且對話框關閉,一切都必須刷新,並重新加載窗體似乎是不錯的選擇。

我試圖把一個公共子模塊,這是否對:

Public Sub CloseOpenStyleDlg() 
    KeepOrDiscardPrompt.Close() 
    StylesDlg.Close() 
    StylesDlg.ShowDialog() 
End Sub 

但只要該子從提示調用時,它的應用程序崩潰。 (在調試時不顯示錯誤,只是崩潰)我應該如何從給定的對話框關閉對話框,它是父對象,並重新打開它的父對象? (這會觸發父級的所有Dialog_Load()代碼)

在此先感謝! :)

回答

1

您需要再次實例化對話框。如果我拿你的代碼爲例:

Public Sub CloseOpenStyleDlg() 
    KeepOrDiscardPrompt.Close() 
    StylesDlg.Close() 
    StylesDlg = new StylesDlg() 
    StylesDlg.ShowDialog() 
End Sub 
+0

Thanks =)我重新安排了Form_Load()之外的代碼,從現在開始,我幾乎總是遵守最佳做法(嚴重寫作的代碼是如此地獄!),但你的榜樣解決了我對如何重新打開表單,所以選擇了=) – 2009-09-04 00:11:33

0

當表單關閉時,關閉對象內創建的所有資源並處理表單。

如果您想重新使用Window實例,請改用StylesDialog.Hide()函數。

+0

但是,hide會再次調用Form_Load()事件嗎?直覺上,我認爲這是一種讓它看不見但沒有關閉的東西。 – 2009-09-03 22:15:15

+0

我沒有測試它,但我想當你再次調用Show時,Form_Load()不會被調用。 – 2009-09-03 22:51:03

+0

隱藏然後顯示錶單不會引發Load事件。如果你有需要再次調用的初始化代碼,它可以從Form_Load方法中移除並放入另一個方法中並顯式調用。 – snarf 2009-09-03 22:53:10

相關問題