[C#][VB.NET]關閉程式時顯示對話框,用以再次確認是否關閉

  • 51919
  • 0
  • 2010-08-03

[C#][VB.NET]關閉表單時顯示對話框,用以再次確認是否關閉

 

1. 問題描述

關閉程式時顯示對話框,用以再次確認是否關閉

 

2. 方法

只要在 Form Closing 事件,顯示 MessageBox,並且當使用者選擇 否 時,讓 e.Cancel = true 即可

 

C# 程式碼


        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (MessageBox.Show("是否確定要關閉程式", "關閉程式", MessageBoxButtons.YesNo) == DialogResult.No)
            {
                e.Cancel = true;
            }
        }

 

VB.NET 程式碼


    Private Sub Form1_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
        If MessageBox.Show("是否確定要關閉程式", "關閉程式", MessageBoxButtons.YesNo) = DialogResult.No Then
            e.Cancel = True
        End If
    End Sub

 

3. 執行結果

程式關閉時,跳出如下圖的對話框,按是(Y)則關閉程式,按否(N)則不關閉程式

image

 

4. 附註

CloseReason 列舉型別 : 指定關閉表單的原因 (此部份感謝 蹂躪 的提醒)

關閉表單時,可以透過 CloseReason 指定關閉表單的原因

image

沒有指定時,在電腦關機時,想要強制關閉此程式,而關閉程式時,會執行 Form Closing 事件,此時彈出對話框,導致電腦關機中斷。

以下程式碼將 CloseReason 的部份補上 :

C# 程式碼


        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (e.CloseReason != CloseReason.WindowsShutDown)
            {
                if (MessageBox.Show("是否確定要關閉程式", "關閉程式", MessageBoxButtons.YesNo) == DialogResult.No)
                {
                    e.Cancel = true;
                }
            }
        }

 

VB.NET 程式碼


    Private Sub Form1_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
        If (e.CloseReason <> CloseReason.WindowsShutDown) Then
            If MessageBox.Show("是否確定要關閉程式", "關閉程式", MessageBoxButtons.YesNo) = DialogResult.No Then
                e.Cancel = True
            End If
        End If
    End Sub

 

5. 參考

程式執行時,使用者執行關機動作,無法正常關機問題

程式關閉 繼續執行

表單右上角之關閉功能