2009-11-17 55 views
3

我正在使用vb.net 2008和DataGridView。我正在寻找代码,这将允许我将输入键移到右侧的下一列,而不是在保留在同一列中时向下移动一行。DataGridView/Enter Key?

回答

4

这里有一个CodeProject上的文章,显示你想要做什么:

Cheating the DataGridView

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

本文讨论的方法是对DataGridView进行子类化,以重写ProcessDialogKey事件来处理选择同一行中下一个单元格的逻辑,或者先将下一行的列打包。

大多数做你想做的事情的方法似乎涉及到子类化DataGridView。

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

这解决了这个问题,对我来说很好。 – 2010-09-01 16:04:35