首頁 >後端開發 >C++ >關閉啟動表格時如何防止應用程序關閉?

關閉啟動表格時如何防止應用程序關閉?

Barbara Streisand
Barbara Streisand原創
2025-01-29 10:21:09570瀏覽

How to Prevent Application Closure When Closing the Startup Form?

如何防止關閉啟動窗體時應用程序關閉?

在應用程序中有多個窗體的情況下,防止關閉啟動窗體時應用程序終止可能具有挑戰性。本文探討了處理這種情況的正確方法。

初步嘗試

最初,您可以嘗試使用以下代碼關閉 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn