Вы правы, довольно просто поместить курсор ввода в определенную ячейку в DataGridView.Установите свойство DataGridView CurrentCell
для ячейки, в которой требуется курсор, и затем вызовите метод DGV BeginEdit
.
Программировать также легко (я полагаю, это то, что вы подразумеваете под «активировать») формы AcceptButton
.Вызвать метод PerformClick
для экземпляра формы AcceptButton
:
Me.AcceptButton.PerformClick()
Получение DGV для обработки клавиши Enter немного сложнее, даже если наповерхность.Причина в том, что это сложно, потому что когда у вас есть ячейка DGV в режиме редактирования, события DGV KeyPress
и PreviewKeyPress
не запускаются.Решение состоит в том, чтобы создать свой собственный DataGridView, расширив стандартный DataGridView, а затем переопределив функцию ProcessCmdKey
, чтобы вызвать событие, сообщающее слушателям, что была нажата клавиша Enter.
Вот как может выглядеть ваш расширенный элемент управления DGV:
Public Class MyDataGridView
Inherits System.Windows.Forms.DataGridView
Public Event EnterKeyPressed()
Protected Overrides Function ProcessCmdKey(ByRef msg As System.Windows.Forms.Message, ByVal keyData As System.Windows.Forms.Keys) As Boolean
If keyData = Keys.Enter Then
RaiseEvent EnterKeyPressed()
End If
Return MyBase.ProcessCmdKey(msg, keyData)
End Function
End Class
Итак, предположим, что вы используете расширенный DGV, описанный выше, как вы можете сделать то, что вам нужно сделать:
' This positions the input cursor in the third column in the third row.
MyDataGridView1.CurrentCell = MyDataGridView1.Rows(2).Cells(2)
MyDataGridView1.BeginEdit(False)
' Be sure to wire up the EnterKeyPress event on your shiny new MyDataGridView.
Private Sub MyDataGridView1_EnterKeyPressed() Handles MyDataGridView1.EnterKeyPressed
Me.AcceptButton.PerformClick()
End Sub