2017-10-25 16 views
0

에 대한 한 번의 클릭 또는 키 이벤트 내가 4 datagridviews이는 이제 Dgv1, Dgv2, Dgv3, Dgv4VB.NET 여러 datagridviews

을 가정 해 봅시다

내가 이동하고 싶은 위 아래로 행 아래로 화살표 키를 가정 해 보겠습니다.

이 코드를 모든 DataGridview에 대해 한 번 코딩하는 방법이 있습니까? 순간

나는 이런 식으로 4 번을 코딩 할 필요가 :

Private Sub Dgv1_KeyUp(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles Dgv1.KeyUp 
    If e.KeyCode = Keys.Up OR e.KeyCode = Keys.Down OR e.KeyCode = Keys.PageUp Or e.KeyCode = Keys.PageDown Then 
     Dim crRowIndex As Integer = Dgv1.CurrentCell.RowIndex 
     Value = Dgv1.Rows(crRowIndex).Cells(4).Value.ToString 
     ' Do more stuff 
    End If 
End Sub 

그리고이 네 번. 모든 datagridviews 다른 SQL 테이블에서 다른 데이터를 얻을 수 있지만 기능은 동일합니다. 다른 DataGridviews에서 다른 셀이 필요하지만.

답변

1

이로 변경합니다 : 기본적으로

Private Sub Dgv1_KeyUp(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles Dgv1.KeyUp, dgv2.keyup, dgv3.keyup, dgv4.keyup 
If e.KeyCode = Keys.Up OR e.KeyCode = Keys.Down OR e.KeyCode = Keys.PageUp Or e.KeyCode = Keys.PageDown Then 
    Dim dgv as DataGridView = DirectCast(sender, DataGridView) 
    Dim crRowIndex As Integer = dgv.CurrentCell.RowIndex 
    Value = dgv.Rows(crRowIndex).Cells(4).Value.ToString 
    ' Do more stuff 
End If 
End Sub 

그냥 처리되고 특정 된 DataGridView를 얻기 위해 보낸 사람을 사용하여 다음 핸들 목록에 추가되어

+0

이 엄격한 옵션'으로 컴파일되지 않습니다 왜냐하면'sender'는'CurrentCell'이라는 속성이없는'Object' 타입이기 때문입니다. 'sendender'를 올바른 타입으로 캐스팅해야합니다 :'DirectCast (sender, DataGridView)' –