2016-05-16 88 views
0

我的應用程序似乎完全忽略了Form_Closing事件,我不知道爲什麼。我試圖通過使用e.cancel來調試它,並在關閉時顯示一個消息框,但消息框從不顯示,並且e.cancel不會取消它。我的代碼是Visual C#完全忽略FormClosing事件

public void Form1_FormClosing(object sender, FormClosingEventArgs e) 
    { 
     if (isClosed == false) 
     { 
      e.Cancel = true; 
      base.OnFormClosing(e); 
      this.Hide(); 
      this.WindowState = FormWindowState.Minimized; 
     } 
     else 
     { 
      Application.Exit(); 
     } 
    } 

謝謝:)

+0

檢查您的布爾isClosed值?請將代碼放入base.OnFormClosing(e);以及。 –

+0

您是否在使用應用程序。退出或只是突然關閉應用程序。另外,檢查isclosed的值是否爲真 – Shon

+0

我試圖將messagebox放在else語句中,它沒有顯示,所以它不是布爾值。 @Shon –

回答

-1

開始只使用一個消息框,以確定您HACE正確的事件 然後檢查isclosed因爲我懷疑它是真實的價值。

+0

我也測試過將messagebox放在else {}中,它不起作用。僅使用一個消息框也不起作用 –

+0

我懷疑代碼位於錯誤的區域。使用forn的事件列表並使用表格從那裏關閉 – Shon

1

您的方法具有適用於FormClosing事件處理程序的簽名,但是您打電話base.OnFormClosing,它只適用於OnFormClosing重寫。

挑一個。例如,覆蓋看起來像

protected override void OnFormClosing(FormClosingEventArgs e) 
    { 
     if (isClosed == false) 
     { 
      e.Cancel = true; 
      base.OnFormClosing(e); 
      Hide(); 
      WindowState = FormWindowState.Minimized; 
     } 
     else 
     { 
      Application.Exit(); 
     } 
    } 
+0

它返回此錯誤https://gyazo.com/2e95924e7cddeccd6767c3a308af5fde –

+0

@Tyler:很好,錯誤消息告訴你如何解決它。學習閱讀錯誤信息並幫助自己。 –

+0

恩......好的。沒有從Google獲得太多運氣。 –