2014-09-28 39 views
0

我尝试了几种组合,但没有任何成功。当按下按钮时,焦点在黄色(1)上,我想当按下输入键时,焦点会转到单元格(2),然后是(3),依此类推。使用回车键浏览datagridview单元格

enter image description here

如果没有电池的编辑,只用回车键,一切都很好,此代码:

Private Sub DGVBU1_KeyDown(sender As Object, e As KeyEventArgs) Handles DGVBU1.KeyDown 
     If e.KeyCode = Keys.Enter Then 
      Dim CLIndex As Integer = DGVBU1.CurrentCell.ColumnIndex 
      Dim RWIndex As Integer = DGVBU1.CurrentCell.RowIndex 
      If CLIndex = 2 Then 
       DGVBU1.CurrentCell = DGVBU1.Rows(RWIndex - 1).Cells(CLIndex + 1) 
      ElseIf CLIndex = 3 Then 
       DGVBU1.CurrentCell = DGVBU1.Rows(RWIndex).Cells(CLIndex - 1) 
      End If 
     End If 
    End Sub 

但当Enter键单元格编辑后,按下它下降到行+ 1 。

我也试过这样:

Private Sub DGVBU1_CellEndEdit(sender As Object, e As DataGridViewCellEventArgs) Handles DGVBU1.CellEndEdit 
    Dim CLIndex As Integer = DGVBU1.CurrentCell.ColumnIndex 
    Dim RWIndex As Integer = DGVBU1.CurrentCell.RowIndex 
    If CLIndex = 2 Then 
     DGVBU1.CurrentCell = DGVBU1.Rows(RWIndex).Cells(CLIndex - 1) 
     DGVBU1.CurrentCell = DGVBU1.Rows(8).Cells(CLIndex + 1) 
    ElseIf CLIndex = 3 Then 
     DGVBU1.CurrentCell = DGVBU1.Rows(RWIndex).Cells(CLIndex - 1) 
    End If 
End Sub 

...但随后从输入键发送焦点(1)直接连接到电池(4)。

是否有可能使这项工作?

感谢您的任何帮助。

回答

0

如果DataGridView可能会拦截keydown事件中的Enter键。如果是这样的问题,一个解决方案是导出控制类并覆盖ProcessCmdKey:

受保护的覆盖功能ProcessCmdKey(MSG的ByRef作为报文,BYVAL KEYDATA作为键)为布尔

如果KEYDATA = Keys.Enter然后 的onkeydown(新KeyEventArgs(KEYDATA)) ProcessCmdKey =真 否则 ProcessCmdKey = MyBase.ProcessCmdKey(味精,KEYDATA) 结束如果

端功能

+0

但也禁用任何使用Enter键的代码,以及通过带有Enter键的DGV导航。 – Jovica 2014-09-28 21:15:58

+0

的确如此。您需要单独处理该代码。 – xpda 2014-09-28 22:04:14

+0

对不起,但我不知道该怎么做? – Jovica 2014-09-29 05:14:42