2017-10-25 26 views
0

私はのはDgv1、Dgv2を言わせて、4 datagridviewsを持って、Dgv3、Dgv4VB.NETワンクリックやキーイベント

は、私はと行を上下に矢印キーを上下に移動するとします。

これは、すべてのDataGridViewでこのコードを作成する方法はありますか?

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 

そして、この4回:私はそれをこのように4回をコーディングする必要が現時点で

。すべての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 

基本的にはあなただけのハンドル]リストに追加し、これはオプション厳格な `でコンパイルされません

+0

処理されている特定のDataGridViewを取得するために、送信者を使用しています'sender'は' CurrentCell'という名前のプロパティを持たない 'Object'型のものであるからです。 'sendender'を正しいタイプにキャストする必要があります:' DirectCast(sender、DataGridView) ' –

関連する問題