按enter键移动到下一个单元格

本文关键字:下一个 单元格 移动 enter | 更新日期: 2023-09-27 17:57:34

我需要更改数据网格视图中的Enter键功能,我想防止它转到新行,我需要它移动到下一个单元格。我尝试了很多逻辑来做到这一点,但都没有成功,最后一个是

if (e.KeyData == Keys.Enter)
    {
        int col = dgvPayments.CurrentCell.ColumnIndex;
        int row = dgvPayments.CurrentCell.RowIndex;
        if (col < dgvPayments.ColumnCount - 1)
        {
            col++;
        }
        else
        {
            col = 0;
            row++;
        }
        if (row == dgvPayments.RowCount)
            dgvPayments.Rows.Add();
        dgvPayments.CurrentCell = dgvPayments[col, row];
        e.Handled = true;
    }

当只按Enter而不是在编辑单元格后,如果我输入一个单元格并对其进行编辑,然后按键enter,它将转到我所在的下一行和列。

按enter键移动到下一个单元格

试试这个

    private void dataGridView1_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.Enter)
        {                
            e.SuppressKeyPress=true;
            int iColumn = dataGridView1.CurrentCell.ColumnIndex;
            int iRow = dataGridView1.CurrentCell.RowIndex;
            if (iColumn == dataGridView1.Columns.Count-1)
                dataGridView1.CurrentCell = dataGridView1[0, iRow + 1];
            else
                dataGridView1.CurrentCell = dataGridView1[iColumn + 1, iRow];
        }
    }