2015-09-15 107 views
0

我的WinForms應用程序中發生了一些奇怪的事情(並且通常是我的錯)。調用PerformClick取消關閉事件

我有一個FormClosing事件,它將檢查是否有任何更改已在未保存的窗體上進行。

如果用戶確認保存更改,我會調用保存按鈕的單擊事件。但是,即使我刪除了OnClick事件中的所有邏輯,表單仍保持打開狀態,並且在關閉之前必須再次關閉它。

如果我跳過這一行buttonSave.PerformClick();,表格正確關閉。

爲什麼要進入點擊事件,取消關閉?任何工作?

private void MyForm_FormClosing(object sender, FormClosingEventArgs e) 
{ 
    //Check if there changes were made on the form 
    //Prompt user to save 
    if (confirmSave) 
    buttonSave.PerformClick(); 

} 

private void buttonSave_Click(object sender, EventArgs e) 
{ 
//Everything in here commented out. 
} 
+1

爲什麼不直接調用事件而不是使用PerformClick? – kevintjuh93

+0

我會建議你,你把你的保存邏輯從事件方法中刪除,並創建一個新的方法,然後可以從多個方法調用。 – MaticDiba

+0

這與我所說的一樣:P – kevintjuh93

回答

0

只需致電活動代替PerformClick即可。PerformClick可能會執行更多代碼,使窗體停止關閉。如顯示按鈕被點擊,聲音等。

因此將PerformClick更改爲buttonSave_Click。所以它只會執行保存功能,而不用按鈕本身做任何事情。

+0

@ user1208908升級了hehe – kevintjuh93