2012-06-18 85 views
0

當用戶在我的DatagridView單元格中輸入無效值時,我在_CellValidating事件中設置「e.Cancel = true」。e.cancel必須允許退出按鈕

似乎e.Cancel還可以防止用戶關閉窗體或打X鍵,我如何添加例外嗎?(允許用戶關閉甚至e.Cancel設置爲true的形式)

+0

您是否嘗試過檢查事件處理程序中的發件人並使用基於發件人的條件邏輯? – Kane

+0

發佈更多代碼James –

+1

請參閱「[Stack Overflow不需要你的SEO技能](http://meta.stackexchange.com/a/130208)」。 –

回答

1

我只是根據這個場景搭建了一個測試項目,看起來DataGridViewCellValidating事件在FormClosing事件之前被調用;這意味着在單元格驗證時您無法知道用戶是否嘗試關閉表單。

嚴格來說,正確的事件順序是讓用戶在表單被允許關閉之前在單元格中輸入有效數據(或通過按下退出鍵取消編輯)。但是,如果你想允許不管封閉的形式,你可以處理Closing事件形式:

protected override void OnClosing(CancelEventArgs e) { 
    e.Cancel = false; 
    base.OnClosing(e); 
} 

這是不好的做法,但它會給你,你要求的行爲。

+0

爲什麼重寫OnClosing是一種不好的做法? – nunespascal

+0

@nunespascal這不是壓倒性的做法,它實際上忽略了'Cancel'屬性的值,所以它總是'false' - 這是不好的做法。 –

+0

非常感謝@Bradley Smith! –