[英]C# WINForm avoid two message box
我有一個帶有“退出”按鈕的GUI程序。 單擊此按鈕時,它將調用Application.Exit()關閉該程序。 在關閉程序之前,它還會調用一個確認消息框。 我還為該GUI主窗體實現了關閉事件。 在這種情況下,它還會調用一個確認消息框,然后調用Application.Exit()。
現在,當我剛剛關閉GUI時,它將彈出一個確認消息框,然后將其關閉,一切都很好。 當我單擊“退出”按鈕時,它將彈出兩次確認消息框。 我認為當它調用Application.Exit()時,將調用Closing事件。
有什么方法可以避免兩次確認消息框?
最好的祝福,
您可以做的是從Application.Exit()方法中刪除確認按鈕,並將其保留在Closing Event中。 然后,不要直接在按鈕單擊事件中調用Application.Exit(),而是調用表單的Form.Close()方法。
這應該是您所需要的。 在您的窗體上調用Close方法將關閉該窗體,如果那是您在應用程序中運行的唯一窗體,它將也結束該應用程序。
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (MessageBox.Show("Really want to close?", "Closing"
, MessageBoxButtons.YesNo) == DialogResult.No)
{
e.Cancel = true;
}
}
private void btnExit_Click(object sender, EventArgs e)
{
this.Close();
}
如果關閉表單后應用程序周圍的邏輯未導致應用程序退出,則應僅在Form_Closed
事件中調用Application.Exit
,如下所示:
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
Application.Exit();
}
您可以為消息使用全局鎖定對象。
每當您想要顯示一個消息框時,您都將編寫如下內容:
lock (mymessages)
{
if (!nomoremessages)
{
MessageBox.Show("Hi");
nomoremessages = true;
}
}
這將確保僅顯示第一條消息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.