我想表明,當用戶試圖關閉應用程序(紅窗交叉和按鈕的窗體上),但是當關閉Windows對話框對話框,此對話框擋住了關機,所以我想要在Windows關閉時進行檢測,並在沒有對話的情況下繼續進行。這裏是我的代碼在CloseReason.UserClosing形式展示了近2倍
後形式負載林捕關閉事件:
this.FormClosing += new FormClosingEventHandler(Form1_FormClosing);
和
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
switch (e.CloseReason)
{
case CloseReason.UserClosing:
if (MessageBox.Show("Do you want to exit the application?", "Your App", MessageBoxButtons.YesNo) == DialogResult.No)
{
e.Cancel = true;
}
break;
case CloseReason.WindowsShutDown:
e.Cancel = false; //this is propably dumb
break;
default:
break;
}
}
但是,當用戶關閉應用程序,對話框如圖2所示。第一個對話框,dotn做任何事情,在第二個對話框之後採取行動 如何在Windows關閉時顯示僅關閉一次而沒有對話框的對話框(因爲Windows正在等待我的應用程序關閉)?
檢查調用堆棧,看看那裏的關閉()調用的來源。或者確保你沒有訂閱過這個活動兩次? –
我試圖調試它,但它只是剛剛只需點擊yes或no在對話框 – miky
嘗試註釋掉你'this.FormClosing + =新...'代碼後燒製的第二時間。您可能已經通過設計人員訂閱了它(或者只是檢查設計器文件)。 – LarsTech