2012-10-29 211 views
1

我正在使用Windows窗體,我想向用戶顯示消息,如果用戶試圖關閉窗口或嘗試關閉應用程序,在完成過程之前進程未完成用戶忘了完成該過程),如果用戶按下OK,我想停止關閉窗口並讓用戶完成該過程,但我確實在網絡上找到了一些代碼,但它在VB中不在c#中防止Windows關閉

private void Form1_FormClosing(object sender, FormClosingEventArgs e) 
{ 
    if (e.CloseReason.Equals(CloseReason.WindowsShutDown)) 
    { 
     Microsoft.VisualBasic.Interaction.Shell("shutdown -a", AppWinStyle.MinimizedFocus, false, -1); 
     MessageBox.Show("Shutdown process cancelled!"); 
    } 
} 
+0

這不是什麼大不了的,你可以在你的C#項目中引用Microsoft.VisualBasic。 –

+0

右鍵單擊項目的引用 - >添加引用 - >打開.NET選項卡 - >找到Microsoft.VisualBasic - >單擊確定 – Leri

回答

5

最好使用這塊代碼段,而不是與e.Cancel按您的要求發揮:

private void Form1_FormClosing(object sender, FormClosingEventArgs e) 
{ 
    if (e.CloseReason.Equals(CloseReason.WindowsShutDown)) 
    { 
     if (MessageBox.Show("You are closing this app.\n\nAre you sure you wish to exit ?", "Warning: Not Submitted", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Stop) == DialogResult.Yes) 
      return;  
     else  
      e.Cancel = true; 
    } 
} 

參考:SystemEvents.SessionEnding Event

時發生在用戶試圖註銷或關閉系統。