簡體   English   中英

動態修改時不更新 Datagridview 單元格值

[英]Datagridview cell value not updated when modified dynamically

根據設計要求,datagridview 不能由用戶直接編輯。 它處於只讀模式。 當用戶雙擊單元格時,datagridview 的只讀屬性變為 false 並且單元格接受鍵盤輸入。 但是,原始鍵盤輸入需要在進入單元格之前進行格式化。 所以,我攔截 KeyPress 事件如下:

private void dgw_keyPress(object sender, KeyPressEventArgs e)
 {
     e.Handled = true;
 }

此時單元格處於編輯模式和臟模式。 然后我用不同的方法更新 Value 屬性並調用dgw.Refresh() ,它應該在單元格上顯示更新的值。 但不會。 僅當當前單元格不臟且未處於編輯模式時才會更新。 如何在單元格仍處於編輯模式時強制顯示更新的值?

有任何想法嗎?

使用下面刷新當前單元格的值,更改以適合您的 EditingControl 類型

if (dgvMain.EditingControl is TextBox)
{
    dgvMain.EditingControl.Text = dgvMain.CurrentCell.Value.ToString();
}

另一種方法:

調用此方法可強制單元格在編輯模式下更新其顯示值。 當外部進程修改單元格值並且您想要通知用戶更改時,即使用戶指定的更改因此丟失,這也很有用。 細節

dgvMain.RefreshEdit();

我用下面的代碼解決了。

GrdBudgetTabOver.EndEdit()

這將工作,

dgv.EndEdit()
dgv.InvalidateCell(ColIdx, RowIdx)

您可以通過實現IDataGridViewEditingControl接口來做到這一點 我認為這是最大程度地控制單元格進入和離開編輯模式的方式。 您可以在 Mark Rideout 的DataGridView FAQ (DOC) 的第 5.11 節中找到更多詳細信息

嘗試DataGridView.EndEdit方法。

提交並結束對當前單元格的編輯操作。

暫無
暫無

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

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