2014-05-23 88 views
0

我有一個模式窗體(登錄),我想要關閉它使用「X」按鈕,強制應用程序退出。 我嘗試這樣做:正在按下表格的X按鈕退出應用程序

enter image description here

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

這導致我的應用程序退出上按下登錄按鈕(關閉)。但我只想在窗口的「X」按鈕上退出。 我該怎麼辦?

+0

什麼是'Login_Deactivate'?這種方法在登錄表單或其他地方在哪裏?誰/什麼叫它? – DonBoitnott

+0

@DonBoitnott它是停用我的登錄模式形式的事件 –

+0

什麼觸發此事件觸發? – DonBoitnott

回答

1

擺脫Deactivate事件,你不需要它。

這裏的問題是,你不能說只是「X」按鈕被按下。你真正要做的是跟蹤所有導致形式關閉的其他條件,並在而不是之一作出反應。

您應該利用DialogResult枚舉,並允許調用應用程序作出反應,而不是試圖在登錄表單中完成所有操作。爲 「OK」,設置屬性

public Login() 
{ 
    DialogResult = DialogResult.None; 
} 

然後,在你的按鈕處理程序:DialogResult = DialogResult.OK

在你的登錄表單構造,該屬性設置爲None

如果您有特定的取消事件,您可以設置DialogResult = DialogResult.Cancel

最終,您可以在登錄表單中有一個FormClosing事件,您可以在其中檢查該值並作出反應。但更重要的是,您的調用應用程序可以檢查登錄表單的結果,並在那裏做出反應。

0

我認爲你應該使用this.Parent.Application.Exit(),它殺死了整個應用程序。

+0

我想殺死整個應用程序按「X」 –

+0

對不起,我誤解了 –

+0

這個問題已經在這個例子中。你並沒有提出任何新的建議。 – DonBoitnott

0

而不是停用事件,請訂閱「登錄」表單的「FormClosing」事件。寫下你寫的相同的代碼。 只有在單擊外部登錄表單時需要關閉應用程序時,才能保留Deactivate事件。

+0

這沒有幫助。你仍然不知道它是如何結束的,這就是這個問題的關鍵。 – DonBoitnott

相關問題