2015-03-19 84 views
0

我有一個「離開」事件觸發的方法:檢查形式是關閉

private void cmbBox1_Leave(object sender, EventArgs e) 
{ 
    bool error = true; 

    if (something == true) 
    { 
     //do stuff... 
     error = false; 
    } 

    if (error == true) 
    { 
     MessageBox.Show("Error!") 
    } 
} 

問題是,關閉窗體數從控制「留下的焦點」,所以當我關閉窗體,彈出消息框。有沒有一種方法,我可以捕捉窗體關閉作爲一個無效的參數?即

if (error == true && this.FormClosing == false) 
{ 
    MessageBox.Show("Error!") 
} 
+0

訂閱在表單關閉前觸發的FormClosing事件。 – 2015-03-19 03:15:44

回答

1

嘗試使用Validating事件而不是Leave

然後在FormClosing,你可以設置this.AutoValidate = AutoValidate.Disable;,你的驗證將不會被解僱。

如果通過「確定」或「取消」按鈕關閉表單,則可能還需要在這些按鈕上設置CausesValidation = false(儘管如此,也許您需要進行驗證)。