我需要在用戶通常在DataGridView
的文本框列中結束編輯模式(無論用戶是否實際修改了值,但不是當用戶按ESC取消編輯模式時)執行任務控制。DataGridView事件
我試過DataGridView
控制本身的幾個事件,也是編輯的控制,但沒有人不正是我想要的:
DataGridView.CellValidating
和DataGridView.CellValidated
:
這些事件被觸發每當用戶選擇另一個單元,即使該單元不處於編輯模式。我試圖檢查CellValidating
事件中的IsCurrentCellDirty
屬性。這幾乎是我所需要的,但只有在用戶實際更改值時才設置IsCurrentCellDirty
。但是,當用戶通常在不改變任何內容的情況下結束編輯模式時,我也需要執行此任務。當用戶取消編輯模式時,這些事件不會被觸發,這很好。
DataGridView.CellValueChanged
此事件也被炒得經常(如果設置一個單元格的值編程的同時,還解僱)。
DataGridView.CellEndEdit
此事件幾乎是我想要的。但是,當用戶通過按下ESC取消編輯模式時,它也會被觸發。有沒有辦法檢查CellEndEdit
事件中編輯模式是否被取消?
DataGridView.CellParsing
此事件幾乎是我想要的。但是,當用戶結束編輯模式而不改變任何內容時,它不會被觸發。
我註冊到DataGridView.EditingControlShowing
事件中這些事件的編輯控制的
Validating
和Validated
事件。他們幾乎做我想要的,但當用戶通過按下ESC取消編輯模式時,他們也會被觸發。有沒有辦法檢查編輯模式是否在這些事件中被取消?
對於我可以註冊的事件以及/或者我可以檢查以實現所需行爲的標誌,我還有其他建議嗎?
謝謝您的回答。我沒有檢查它,因爲同時我找到了我自己的解決方法。只有一件事:在EditingControlShowing中,您應該在添加事件處理程序之前刪除它,以避免多次附加事件處理程序(請參閱http://msdn.microsoft.com/zh-cn/library/system.windows上的註釋.forms.datagridview.editingcontrolshowing.aspx) – 2012-01-09 09:01:15
你是對的,編輯我的答案。 – Rotem 2012-01-09 09:04:07