DataGridView / Enter键?

时间:2009-11-17 00:56:05

标签: datagridview

我正在使用vb.net 2008和DataGridView。我正在寻找允许我将 enter 键移动到右边的下一列而不是向下移动一行同时保留在同一列中的代码。

2 个答案:

答案 0 :(得分:6)

如果您要确认编辑,只需移动到事件CellEndEdit中的下一列。如果您未处于编辑模式,则需要覆盖ProcessDialogKey。见下面的例子:

public class dgv : DataGridView
{
    protected override bool ProcessDialogKey(Keys keyData)
    {
        Keys key = (keyData & Keys.KeyCode);
        if (key == Keys.Enter)
        {
            return this.ProcessRightKey(keyData);
        }
        return base.ProcessDialogKey(keyData);
    }
    protected override bool ProcessDataGridViewKey(KeyEventArgs e)
    {
        if (e.KeyCode == Keys.Enter)
        {
            return this.ProcessRightKey(e.KeyData);
        }
        return base.ProcessDataGridViewKey(e);
    }
}

答案 1 :(得分:4)

这是一篇CodeProject文章,展示了您想要做的事情:

Cheating the DataGridView

这是C#,但它也很简单。

本文讨论的接近方法是继承DataGridView以覆盖ProcessDialogKey事件,以处理选择同一行中下一个单元格的逻辑,或者包装到下一行的第一列。

执行您想要做的事情的大多数方法似乎都涉及继承DataGridView。