Убедитесь, что форма имеет это свойство набора:
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
Привет Ларс. Мой обработчик keydown уже работает так, как ожидалось, но проблема в DataGridView1_ColumnHeaderMouseClick, где у меня это: Dim col_index = e.ColumnIndex, и это генерирует исключение, если я отправляю «Nothing» обработчику. Поэтому мне кажется, что я должен послать нечто «более определенное», чем «Ничто». Я хотел бы отправить клик на заголовок столбца «1». –
Однако, я стараюсь это: Dim е Как System.Windows.Forms.DataGridViewCellMouseEventArgs f.ColumnIndex = 1 DataGridView1_ColumnHeaderMouseClick (отправитель, е), но е только для чтения, так вот путь или обходной путь, чтобы отправить f.columnindex обработчику DataGridView1_ColumnHeaderMouseClick? –
@ user973238 Обновленный ответ. – LarsTech