2

ショートカット キーを使用して datagridview 列 1 の headerclick をシミュレートしようとしていますが、方法がわかりません。

Private Sub frm_lista_KeyDown(ByVal sender As Object, ByVal e As KeyEventArgs) Handles Me.KeyDown
  If e.KeyCode = Keys.S And e.Alt Then
    'this handler exists  
    DataGridView1_ColumnHeaderMouseClick(whathere, whathere)
  End If
End Sub

何か助けはありますか?

4

1 に答える 1

4

フォームに次のプロパティが設定されていることを確認してください。

Me.KeyPreview = True

キーボード イベントから列 1 を指定しようとしているので、独自のイベント引数を渡すことができます。

Private Sub Form1_KeyDown(sender As Object, e As KeyEventArgs) Handles MyBase.KeyDown
  If ((Control.ModifierKeys And e.Alt) AndAlso e.KeyCode = Keys.S) Then
    Dim mea As New MouseEventArgs(MouseButtons.None, -1, -1, -1, -1)
    Dim dgvcme As New DataGridViewCellMouseEventArgs(1, -1, -1, -1, mea)
    DataGridView1_ColumnHeaderMouseClick(DataGridView1, dgvcme)
  End If
End Sub

e.ColumnIndexイベントにプロパティが設定されているはずです。

Private Sub DataGridView1_ColumnHeaderMouseClick(sender As Object, e As DataGridViewCellMouseEventArgs) Handles DataGridView1.ColumnHeaderMouseClick
  If e.ColumnIndex = 1 Then
    MessageBox.Show("OK")
  End If
End Sub

あるいは、両方の場所からサブルーチンを呼び出すこともできます:

Private Sub Form1_KeyDown(sender As Object, e As KeyEventArgs) Handles MyBase.KeyDown
  If ((Control.ModifierKeys And e.Alt) AndAlso e.KeyCode = Keys.S) Then
    Call HandelColumnOneClick()
  End If
End Sub

Private Sub DataGridView1_ColumnHeaderMouseClick(sender As Object, e As DataGridViewCellMouseEventArgs) Handles DataGridView1.ColumnHeaderMouseClick
  If e.ColumnIndex = 1 Then
    Call HandleColumnOneClick()
  End If
End Sub

Private Sub HandleColumnOneClick()
  '// Do Something
End Sub
于 2012-06-07T12:46:03.200 に答える