簡體   English   中英

關閉表格時如何獲取單元格值的變化?

[英]How to get cell value change when closing form?

我有一個上面帶有DataGridView的表單。

在此DataGridView中,有一個DataGridViewComboBoxColumn。 更改此DataGridViewComboBoxColumn的單元格的值時,僅在離開該單元格時才會觸發CellValueChanged事件(例如,如果我單擊到另一個單元格中)。 當我更改值然后關閉表單時,不會觸發該事件。

那么,如果我的表單只是關閉了,如何保存更改(如果有更改)?

[UPDATE]

通過form.ShowDialog()顯示DataGridView處於打開狀態時,不會觸發CellValueChanged:

using (FormWithDataGridView form = new FormWithDataGridView()) {
    form.ShowDialog();   // DataGridView on form fires no CellValueChanged-Event when form gets closed
}

從MSDN上ShowDialog的條目的社區內容中,當您關閉模式窗體時,它只是被隱藏了,因此調用代碼仍然可以訪問DialogResult或窗體的其他屬性。 顯然,這就是為什么不觸發DataGridView上的CellValueChanged事件的原因( CellParsingCellEndEdit事件也不會引發)。

解決方法是,在表單關閉事件中,可以從DataGridView移除焦點,這將導致在必要時觸發CellValueChanged事件。 如果表單上沒有任何其他控件可以將焦點設置為該控件,則可以在表單上放置標簽並為其指定焦點。

您是否嘗試過使用dataGridView1.CellParsing 即使由於關閉包含的窗體而導致單元格的焦點丟失,這也應該觸發(據我所知)。 僅當用戶更改了單元格的值時才會觸發。

[編輯]現在,當我考慮更多時,如果我是你,我會嘗試使用dataGridView1.CellEndEdit 這樣更好.. [/編輯]

我本人也遇到過類似情況,但是最后一個復選框以編程方式更新了-除非我切換行,否則不會更新。

在更新組合框之前,請嘗試調用BindingSource.EndEdit方法。

對我來說,我隨后稱為數據適配器,它可以識別對datagridview的更改-這樣就可以完成工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM