如何更改在DataGridView上按下“enter”键时会发生什么?

当我正在编辑一个单元格并按下回车键时,自动选择下一行,我想留在当前行…除了EndEdit之外我什么都不想发生。

我有这个:

private void dtgProductos_CellEndEdit(object sender, DataGridViewCellEventArgs e) { dtgProductos[e.ColumnIndex, e.RowIndex].Selected = true; //this line is not working var index = dtgProductos.SelectedRows[0].Cells.IndexOf(dtgProductos.SelectedRows[0].Cells[e.ColumnIndex]); switch (index) { case 2: { dtgProductos.SelectedRows[0].Cells[4].Selected = true; dtgProductos.BeginEdit(true); } break; case 4: { dtgProductos.SelectedRows[0].Cells[5].Selected = true; dtgProductos.BeginEdit(true); } break; case 5: { btnAddProduct.Focus(); } break; default: break; } } 

因此,当我编辑一个不是最后一行的行时,我收到此错误:

 Operation is not valid because it results in a reentrant call to the SetCurrentCellAddressCore function. 

我认为您需要覆盖ProcessEnterKey以不将焦点提前到下一行。

也许这个主题会有所帮助。