與Visual Basic不同,C#不保留表單引用。你需要自己保留它們。 Form2
只是類型 - 它沒有「默認參考」。主要思想不是「每種表單類型都有一個實例,隱藏並根據需要顯示」 - 它是「表單與其他任何對象一樣 - 以與其他對象相同的方式創建和處理它們」。通常的工作流程不是Form1.Hide(); Form2.Show();
- 更像是Application.Run(new MainForm()); ... using (var form = new Form1()) { form.ShowDialog(); }
。這並不意味着VB方法不能用於C# - 它只是意味着你必須自己實現它(或切換到VB.NET)。如果它是有道理的 - 設計已經有一段時間了,所以確保你有一個好的想法,你爲什麼以這種方式做事,而不僅僅是慣性。
這聽起來像你真正的問題是,你試圖實現某種嚮導,或通過多種形式的流。這意味着你應該使用嚮導,或者改變整個應用程序的構建方式。請致電program.cs
。瞭解它的功能。當傳遞給Application.Run
的表單關閉時,整個應用程序關閉。有很多方法可以重寫,但我們無法以一般方式真正幫助您 - 我只能告訴您,如果您的應用程序不適合「主窗口+其他窗口」模型,則默認的應用程序設置爲不會爲你工作。
有人應該對您的兩種表格的生命週期負責。我們無法真正地告訴你們 - 可能是其中一種形式,也許是主要形式,它以系列中的兩種形式打開模態對話框。我們根本無法分辨 - 這是您需要解決的設計問題。但負責人也將在正確的時間點處理關閉和打開個人表格。
那麼,誰持有參考到'Form2'? –
P/Invoke ........ –
看到我的兩個表單項目:http://stackoverflow.com/questions/34975508/reach-control-from-another-page-asp-net – jdweng