[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)則不關閉程式
4. 附註
CloseReason 列舉型別 : 指定關閉表單的原因 (此部份感謝 蹂躪 的提醒)
關閉表單時,可以透過 CloseReason 指定關閉表單的原因
沒有指定時,在電腦關機時,想要強制關閉此程式,而關閉程式時,會執行 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. 參考