![](/img/trans.png)
[英]Windows Forms: Datagridview cell value not updated when it is modified
[英]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.