2014-09-28 1 views
0

여러 조합을 시도했지만 성공하지 못했습니다. 버튼을 누르면 포커스가 노란색으로 바뀌고 (1), 키를 입력하면 셀 (2), 포커스 (3) 등으로 이동합니다. 이 행 아래로 이동 + 1 셀 편집 후 누르면Enter 키를 사용하여 DataGridview 셀 탐색

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 image description here

더 셀 편집이없는 경우는,이 ​​코드 괜찮습니다 .

나는 또한이 시도했습니다

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입니다 :

보호 오버라이드 (override) 기능 ProcessCmdKey (하는 ByRef MSG 메시지로, ByVal의 keydata 키로) 부울

으로

keydata = Keys.Enter 그런 경우, onKeyDown에 (뉴 KeyEventArgs (keydata는))는 ProcessCmdKey는 은 그렇지 는 ProcessCmdKey = MyBase.ProcessCmdKey (MSG, keydata) 종료하면

최종 기능

+0

하지만 그 또한 진정한 비활성화 = Enter 키를 사용하는 코드 및 DGV를 통해 Enter 키를 사용하여 탐색하는 코드. – Jovica

+0

사실입니다. 이 코드를 별도로 처리해야합니다. – xpda

+0

미안하지만, 어떻게 해야할지 모르겠다. – Jovica