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

时间:2010-03-26 23:10:43

标签: c# winforms

当我正在编辑一个单元格并按下回车时,下一行会被自动选中,我想留在当前行...除了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.

1 个答案:

答案 0 :(得分:2)

我认为您需要覆盖ProcessEnterKey才能将焦点提升到下一行。

也许this thread会有所帮助。