2016-01-06 141 views
0

我想在按下按鈕時關閉應用程序,但我想禁用關閉按鈕(X按鈕右上角)。當關閉按鈕被禁用時關閉表格程序

我禁用了關閉按鈕,此代碼:

protected override void OnFormClosing(FormClosingEventArgs e) 
{ 
    e.Cancel = true; 
} 

但現在當我嘗試使用此代碼它不會工作關閉程序。

private void button1_Click(object sender, EventArgs e) 
{ 
    Application.Exit(); 
} 

有沒有一種方法是單擊按鈕時關閉該程序?

+2

這是一個非常殘酷的用戶體驗。不要禁用關閉按鈕;讓他們使用它,如果他們想關閉程序。 – Servy

回答

2

在事件處理程序,檢查CloseReason property of the FormClosingEventArgs:

這可以讓你的行爲不同,這取決於how the close was initiated,所以在應用程序退出(或Windows關機)的情況下,可以允許的形式關閉。

protected override void OnFormClosing(FormClosingEventArgs e) 
{ 
    if (e.CloseReason != CloseReason.ApplicationExitCall 
    && e.CloseReason != CloseReason.WindowsShutDown) 
    { 
      e.Cancel = true; 
    } 
} 
1

您將取消總是窗體的關閉,所以這就是爲什麼它不起作用。

試試這個:

bool blockClosing = true; 

protected override void OnFormClosing(FormClosingEventArgs e) 
{ 
    e.Cancel = blockClosing; 
} 

private void button1_Click(object sender, EventArgs e) 
{ 
    blockClosing = false; 
    Application.Exit(); 
} 

這樣,當您按下按鈕,它可以讓THA PP被關閉。

-1

FormClosingEventArgsReason成員,告訴你究竟是想要關閉的形式。只需允許ApplicationExitCall而不取消它。