在DataGridView中停止不必要的行创建

时间:2016-03-27 04:01:30

标签: c# winforms datagridview

我的winform中有一个DataGridView(DGV)控件。 DGV有4列。前2列是Combobox类型,其余2列是Textbox类型。当我在任何单元格中按Enter键时,它会移动到下一个单元格。如果按Enter键,则在最后一个单元格中创建一个新行,焦点移动到第二行的第一列。我希望它始终以这种方式表现。当我设置'启用编辑' = true时,我的问题就开始了。当我选择启用编辑=真时第一列中来自组合框的任何项目都会创建一个不必要的新行。我不想在此时创建一​​个新行。请告知如何避免这种情况。

private void dataGridView1_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyData == Keys.Enter)
    {
        int col = dataGridView1.CurrentCell.ColumnIndex;
        int row = dataGridView1.CurrentCell.RowIndex;

        if (col < dataGridView1.ColumnCount - 1)
        {
            col++;
        }
        else
        {
            col = 0;
            row++;
        }

        if (row == dataGridView1.RowCount)
            dataGridView1.Rows.Add();

        dataGridView1.CurrentCell = dataGridView1[col, row];
        e.Handled = true;
    }
}

1 个答案:

答案 0 :(得分:2)

在DataGridView控件中,将AllowUserToAddRows属性设置为False。这不会阻止您通过自己的自定义事件模型以编程方式添加行。它只会禁用那些您可能遇到问题的自动生成的行。