如何防止關閉啟動窗體時應用程序關閉?
在應用程序中有多個窗體的情況下,防止關閉啟動窗體時應用程序終止可能具有挑戰性。本文探討了處理這種情況的正確方法。
初步嘗試
最初,您可以嘗試使用以下代碼關閉 Form1 並顯示 Form2:
<code class="language-c#">Form2 frm = new Form2(); frm.Show(); this.Close();</code>
但是,當關閉 Form1 時,這會導致 Form2 也關閉。為了克服這個問題,您可以嘗試隱藏 Form1 而不是關閉它:
<code class="language-c#">Form2 frm = new Form2(); frm.Show(); this.Hide();</code>
雖然這可以防止 Form2 關閉,但它會產生一個新的缺點:當關閉 Form2 時,應用程序不會退出。
解決方案
為了解決這兩個問題,解決方案在於修改 Program.cs 文件中的代碼,在該文件中定義了應用程序啟動行為。通過調整此代碼,您可以防止僅在關閉啟動窗體時應用程序終止。
在以下修改後的代碼中,將事件處理程序添加到啟動窗體以監視其關閉事件:
<code class="language-c#"> [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); var main = new Form1(); main.FormClosed += new FormClosedEventHandler(FormClosed); main.Show(); Application.Run(); }</code>
當關閉啟動窗體時,將觸發 FormClosed 事件處理程序:
<code class="language-c#"> static void FormClosed(object sender, FormClosedEventArgs e) { ((Form)sender).FormClosed -= FormClosed; if (Application.OpenForms.Count == 0) Application.ExitThread(); else Application.OpenForms[0].FormClosed += FormClosed; }</code>
此事件處理程序確保僅當沒有其他窗體打開時應用程序才會退出。當關閉啟動窗體以外的窗體時,事件處理程序會更新事件偵聽器以監視下一個打開的窗體的關閉。
通過實現此解決方案,您現在可以關閉啟動窗體而不會終止應用程序,從而允許其他窗體保持活動狀態,並使應用程序按預期運行。
以上是關閉啟動表格時如何防止應用程序關閉?的詳細內容。更多資訊請關注PHP中文網其他相關文章!