2014-04-30 122 views
1

我是學校的首席程序員,我們必須做一個大型項目,並且我的表單關閉中有一個問題,特別是自己製作的表單「關閉事件」。C#表格關閉事件

private void sluitenToolStripMenuItem_Click(object sender, EventArgs e) 
    { 
     if (MessageBox.Show("Het programma wordt hiermee gesloten.\nBent u zeker dat u wilt sluiten en uitloggen?", 
      "Waarschuwing , u staat op het moment het programma te sluiten",MessageBoxButtons.YesNo, 
      MessageBoxIcon.Exclamation) == DialogResult.Yes) 
     { 
      Application.Exit(); 
     } 
    } 

    private void window_Closing(object sender, FormClosingEventArgs e) 
    { 
     if(MessageBox.Show("Bent u zeker dat u wilt uitloggen?","Waarschuwing , u staat op het moment uit te loggen", 
      MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation) == DialogResult.Yes) 
     { 

      loginForm.Show(); 
     } 
     else 
     { 
      e.Cancel = true; 
     } 

現在我的問題是,當我使用sluitenToolStripMenuItem_Click我按Yes按鈕會關閉我的應用程序,它會觸發事件WINDOW_CLOSING。 但我只想要window_Closing事件發生,當我的用戶在右上角單擊te大紅色X而不是當用戶單擊我的tooltrip項目時。 在此先感謝
此外,如果任何人有製作好的圖形用戶界面,將是很好的任何提示;) (我來自Belgium爲荷蘭在我的代碼很抱歉)

+0

有這樣做的標準方式 - 在你的EventArgs'CloseReason.UserClosing'意味着你已經點擊了'[X]'或'按Alt + F4'。 – Andrew

+0

安德魯,如果我的用戶在我的工具箱中按下了我的關閉功能,這仍然是我的用戶點擊一些東西,所以我的用戶將是我的事件將會發生的原因。我喜歡的東西就像私人無效window_Closing(對象發件人,RedcrossEvent)所以我可以只是改變紅色的X事件,並不是每次嘗試關閉我的表格 – vsp33ddyv

+0

爲此,您可以檢查您的FormClosing事件中的發件人 – Andrew

回答

2

你可以把一個變量來存儲事件發生地點的狀態。

bool ClosedFromMenu = false; 
private void sluitenToolStripMenuItem_Click(object sender, EventArgs e) 
{ 
    if (MessageBox.Show("Het programma wordt hiermee gesloten.\nBent u zeker dat u wilt sluiten en uitloggen?", 
     "Waarschuwing , u staat op het moment het programma te sluiten",MessageBoxButtons.YesNo, 
     MessageBoxIcon.Exclamation) == DialogResult.Yes) 
    { 
     ClosedFromMenu = true; 
     Application.Exit(); 
    } 
} 

private void window_Closing(object sender, FormClosingEventArgs e) 
{ 
    if(!ClosedFromMenu) 
    { 
    if(MessageBox.Show("Bent u zeker dat u wilt uitloggen?","Waarschuwing , u staat op het moment uit te loggen", 
     MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation) == DialogResult.Yes) 
    { 

     loginForm.Show(); 
    } 
    else 
    { 
     e.Cancel = true; 
    } 
    } 
} 
+0

我在想做這一個,但我的教授總是說我用了很多if/else,所以爲什麼我沒有這樣做。所以如果有另一種方式會很棒。但謝謝你的答案! – vsp33ddyv