在键输入时移动到下一个单元格

时间:2013-02-04 10:28:46

标签: c# winforms datagridview cell enter

我需要在datagridview中更改 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 键,它就会进入下一行和我进入后的列。

1 个答案:

答案 0 :(得分:0)

试试这个

    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];

        }
    }